Python 语法糖
\,换行连接
|
s=''
s+='a'+
'b'+
'c'
n=1+2+
3
# 6
|
while,for 循环外的 else
如果 while 循环正常结束(没有break退出)就会执行else。
|
num=[1,2,3,4]
mark=0
whilemark<len(num):
n=num[mark]
ifn%2==0:
print(n)
# break
mark+=1
else:print("done")
|
zip() 并行迭代
|
a=[1,2,3]
b=['one','two','three']
list(zip(a,b))
# [(1, 'one'), (2, 'two'), (3, 'three')]
|
列表推导式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
x=[num fornum inrange(6)]
# [0, 1, 2, 3, 4, 5]
y=[num fornum inrange(6)ifnum%2==0]
# [0, 2, 4]
# 多层嵌套
rows=range(1,4)
cols=range(1,3)
foriinrows:
forjincols:
print(i,j)
# 同
rows=range(1,4)
cols=range(1,3)
x=[(i,j)foriinrows forjincols]
|
字典推导式
{ key_exp : value_exp fro expression in iterable }
|
#查询每个字母出现的次数。
strs='Hello World'
s={k:strs.count(k)forkinset(strs)}
|
集合推导式
{expression for expression in iterable }
元组没有推导式
本以为元组推导式是列表推导式改成括号,后来发现那个 生成器推导式。
生成器推导式
|
>>>num=(xforxinrange(5))
>>>num
...:<generator object<genexpr>at0x7f50926758e0>
|
函数
函数关键字参数,默认参数值
|
defdo(a=0,b,c)
return(a,b,c)
do(a=1,b=3,c=2)
|
函数默认参数值在函数定义时已经计算出来,而不是在程序运行时。
列表字典等可变数据类型不可以作为默认参数值。
|
defbuygy(arg,result=[]):
result.append(arg)
print(result)
|
changed:
|
defnobuygy(arg,result=None):
ifresult==None:
result=[]
result.append(arg)
print(result)
# or
defnobuygy2(arg):
result=[]
result.append(arg)
print(result)
|
*args 收集位置参数
|
defdo(*args):
print(args)
do(1,2,3)
(1,2,3,'d')
|
**kwargs 收集关键字参数
|
defdo(**kwargs):
print(kwargs)
do(a=1,b=2,c='la')
# {'c': 'la', 'a': 1, 'b': 2}
|
lamba 匿名函数
生成器
生成器是用来创建Python序列的一个对象。可以用它迭代序列而不需要在内存中创建和存储整个序列。
通常,生成器是为迭代器产生数据的。
生成器函数函数和普通函数类似,返回值使用 yield 而不是 return 。
|
defmy_range(first=0,last=10,step=1):
number=first
whilenumber<last:
yieldnumber
number+=step
>>>my_range()
...<generator objectmy_range at0x7f02ea0a2bf8>
|
装饰器
有时需要在不改变源代码的情况下修改已经存在的函数。
装饰器实质上是一个函数,它把函数作为参数输入到另一个函数。
举个栗子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# 一个装饰器
defdocument_it(func):
defnew_function(*args,**kwargs):
print("Runing function: ",func.__name__)
print("Positional arguments: ",args)
print("Keyword arguments: ",kwargs)
result=func(*args,**kwargs)
print("Result: ",result)
returnresult
returnnew_function
# 人工赋值
defadd_ints(a,b):
returna+b
cooler_add_ints=document_it(add_ints)#人工对装饰器赋值
cooler_add_ints(3,5)
# 函数器前加装饰器名字
@document_it
defadd_ints(a,b):
returna+b
|
可以使用多个装饰器,多个装饰由内向外向外顺序执行。
命名空间和作用域
|
a=1234
deftest():
print("a = ",a)# True
####
a=1234
deftest():
a=a-1 #False
print("a = ",a)
|
可以使用全局变量 global a
。
|
a=1234
deftest():
globala
a=a-1 #True
print("a = ",a)
|
Python 提供了两个获取命名空间内容的函数
local()
global()
_ 和 __
Python 保留用法。
举个栗子:
|
defamazing():
'''This is the amazing.
Hello
world'''
print("The function named: ",amazing.__name__)
print("The function docstring is: n",amazing.__doc__)
|
异常处理,try…except
只有错误发生时才执行的代码。
举个栗子:
|
>>>l=[1,2,3]
>>>index=5
>>>l[index]
Traceback(most recent call last):
File"",line1,in
IndexError:listindex out of range
|
再试下:
|
>>>l=[1,2,3]
>>>index=5
>>>try:
... l[index]
...except:
... print("Error: need a position between 0 and",len(l)-1,", But got",index)
...
Error:needaposition between0and2,But got5
|
没有自定异常类型使用任何错误。
获取异常对象,except exceptiontype as name
1
2
3
4
5
6
7
8
9
10
11
12
|
short_list=[1,2,3]
while1:
value=input("Position [q to quit]? ")
ifvalue=='q':
break
try:
position=int(value)
print(short_list[position])
exceptIndexErroraserr:
print("Bad index: ",position)
exceptExceptionasother:
print("Something else broke: ",other)
|
自定义异常
异常是一个类。类 Exception
的子类。
|
classUppercaseException(Exception):
pass
words=['a','b','c','AA']
foriinwords:
ifi.isupper():
raiseUppercaseException(i)
# error
Traceback(most recent call last):
File"",line3,in
__main__.UppercaseException:AA
|
命令行参数
命令行参数
python文件:
|
importsys
print(sys.argv)
|
PPrint()友好输出
与print()用法相同,输出结果像是列表字典时会不同。
类
子类super()调用父类方法
举个栗子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
classPerson():
def__init__(self,name):
self.name=name
classemail(Person):
def__init__(self,name,email):
super().__init__(name)
self.email=email
a=email('me','me@me.me')
>>>a.name
...'me'
>>>a.email
...'me@me.me'
|
self.__name 保护私有特性
|
classPerson():
def__init__(self,name):
self.__name=name
a=Person('me')
>>>a.name
...AttributeError:'Person'objecthas no attribute'__name'
# 小技巧
a._Person__name
|
实例方法( instance method )
实例方法,以self作为第一个参数,当它被调用时,Python会把调用该方法的的对象作为self参数传入。
|
classA():
count=2
def__init__(self):# 这就是一个实例方法
A.count+=1
|
类方法 @classmethod
|
classA():
count=2
def__init__(self):
A.count+=1
@classmethod
defhello(h):
print("hello",h.count)
|
注意,使用h.count
(类特征),而不是self.count
(对象特征)。
静态方法 @staticmethod
|
classA():
@staticmethod
defhello():
print("hello, staticmethod")
>>>A.hello()
|
创建即用,优雅不失风格。
特殊方法(sqecial method)
一个普通方法:
|
classword():
def__init__(self,text):
self.text=text
defequals(self,word2):#注意
returnself.text.lower()==word2.text.lower()
a1=word('aa')
a2=word('AA')
a3=word('33')
a1.equals(a2)
# True
|
使用特殊方法:
|
classword():
def__init__(self,text):
self.text=text
def__eq__(self,word2):#注意,使用__eq__
returnself.text.lower()==word2.text.lower()
a1=word('aa')
a2=word('AA')
a3=word('33')
a1==a2
# True
|
其他还有:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
*方法名* *使用*
__eq__(self,other) self==other
__ne__(self,other) self!=other
__lt__(self,other) self other
__le__(self,other) self=other
__add__(self,other) self+other
__sub__(self,other) self-other
__mul__(self,other) self*other
__floordiv__(self,other) self//other
__truediv__(self,other) self/other
__mod__(self,other) self%other
__pow__(self,other) self**other
__str__(self) str(self)
__repr__(self) repr(self)
__len__(self) len(self)
|
文本字符串
|
'%-10d | %-10f | %10s | %10x'%(1,1.2,'ccc',0xf)
#
'1 | 1.200000 | ccc | 33'
|
{} 和 .format
|
'{} {} {}'.format(11,22,33)
# 11 22 33
'{2:2d} {0:-10d} {1:10d}'.format(11,22,33)
# :后面是格式标识符
# 33 11 22
'{a} {b} {c}'.format(a=11,b=22,c=33)
|
分享到:
相关推荐
本章节主要讲解了 Python 函数的基本概念和应用,包括函数的定义、函数的调用、函数的参数、函数的返回值等。通过实践习题和答案,读者可以更好地理解 Python 函数的使用和应用。 6.1 节定义函数:默认返回值 在 ...
本教学设计针对Python函数这一核心概念,旨在帮助学生在已有的Python基础知识上,进一步提升编程技能。学生应已掌握了Python的基础语法和三种逻辑结构:顺序、条件分支和循环。然而,他们在逻辑思维和基础知识的扎实...
python 函数的基本语法
在Python编程语言中,"语法糖"(Syntax Sugar)指的是通过简洁、易读的语法来表达复杂的概念,使得代码更加优雅、简洁。Python本身就是一种强调可读性的语言,它的设计哲学之一就是“易于阅读的代码胜过易于理解的...
当需要结合两者的优点时,就会涉及到C调用Python函数的话题。本文将深入探讨这个主题,旨在提供一个全面的理解和实践指南。 首先,我们要理解为什么要在C中调用Python函数。这种需求通常出现在以下几种情况:1) 想...
以下是对Python定义函数语法的详细解释: 1. **函数定义语法**: Python 中定义函数使用 `def` 关键字,接着是自定义的函数名,遵循Python的命名规则(小写字母和下划线组合)。函数名后面是圆括号 `()`,里面可以...
在Python编程语言中,`lower()`函数是一个非常实用的字符串方法,主要用于将字符串中的所有大写字母转换为小写字母。这个功能在处理文本数据时非常常见,因为大小写不敏感的比较或处理通常需要将所有字符统一为一种...
Python函数与模块 面向对象编程在Python中的应用 Python异常处理与调试 Python文件操作与系统编程 Python网络编程基础 Python高级特性:装饰器与迭代器 Python数据库操作:SQLAlchemy Python与Web开发:Flask框架 ...
标识符的命名规则有特殊含义,如单下划线开头的标识符表示非公开属性,双下划线开头表示私有成员,而双下划线开头和结尾的标识符通常是Python的特殊方法,如`__init__`是类的构造函数。 Python的语法特点是严格依赖...
Python是一种高级编程语言,以其简洁明了的语法和强大的功能而受到广泛的欢迎。这份文档资料主要涵盖了Python的基础语法,包括输入输出、变量命名规则、条件判断以及数据类型。 首先,让我们了解一下Python中的输入...
Python 函数的定义使用 def 语句,语法格式如下: ``` def 函数名称(参数1, 参数2, ……): 函数体 ``` 其中,函数名称是用户自己定义的名称,参数1、参数2 等是函数的参数。 Python 函数可以有返回值,也可以...
在面向对象编程方面,Python支持类(class)和对象(object),可以实现继承、封装和多态。Python的模块化设计也十分优秀,通过import语句可以导入并使用其他文件中的函数和变量,方便代码组织和重用。 接下来,...
总的来说,Python函数是通过`def`关键字定义的,包含一个可选的参数列表,并在其内部执行特定任务。理解函数、参数、形参和实参以及局部变量的概念对于编写可维护和可扩展的Python代码至关重要。通过熟练掌握这些...
**Python标识符**是指用于命名变量、函数、类等的字符序列。它们可以包含字母、数字和下划线,但不能以数字开头。Python区分大小写,所以`myVariable`和`myvariable`被视为不同的标识符。特别地,以下划线开头的...
Python的标识符用于区分变量、函数、类等实体,是由字母、数字和下划线组成,但不能以数字开头,且必须区分大小写。特别地,单下划线开头的标识符有特殊的访问限制,例如,以单下划线开头的标识符通常是保护性质的...
总结一下,Python装饰器语法糖使得我们能够优雅地扩展功能,而无需直接修改原函数的代码。通过使用 `functools.wraps`,我们可以保持被装饰函数的元信息。同时,带参数的装饰器进一步增强了装饰器的灵活性,允许我们...
Python 语言的基础语法包括变量、数据类型、操作符、控制结构、函数、模块等几个方面。下面是 Python 基础语法合集的详细介绍: 变量 在 Python 中,变量是存储值的名称。Python 中的变量不需要声明,直接赋值即可...
7. **面向对象编程**:Python支持面向对象编程,包括类(class)的定义、对象的创建、继承、封装和多态性。__init__方法用于初始化对象,self关键字用来引用当前对象。 8. **文件操作**:Python提供了丰富的文件I/O...
Python基础语法包括了多种编程元素,如数据类型、控制结构、函数定义、面向对象编程、异常处理以及模块和包的使用等。以下是对给定文件中提到的知识点的详细解释: 1. Python基础语法:Python语言具有简洁直观的...
5. 调用Python函数:使用`PyObject_CallObject()`函数执行Python函数,并传入参数对象。 6. 处理返回值:根据Python函数的返回类型,将结果转换回C++数据类型。 7. 清理资源:调用`Py_DECREF()`释放不再使用的Python...