1.函数定义
下面是函数的定义语法:
def functionname( parameters ):
"函数_文档字符串"
function_suite
return [expression]
在定义函数的时候需要注意以下几点:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
注:函数体内语句统一空相同空格。
2.函数的调用
FunctionName(args)
在上面的语法中,FunctionName表示函数名称,args为函数的参数
下面举个例子:
#!/usr/bin/env python
# coding:utf-8
# --------------------------------
# Author :
# Email :
# Version :
# Create_date:
# Description:
# --------------------------------
def sub(a, b):
"""
计算a+b
:param a: int
:param b: int
:return: a+b
"""
return a+b
def main():
# 我们可以通过调用__doc__函数获取sub函数的doc描述
print(sub.__doc__)
print(sub(5, 10))
if __name__ == "__main__":
main()
Output:
$ python main.py
计算a+b
:param a: int
:param b: int
:return: a+b
15
注:定义函数时,函数不执行,调用函数时,函数才执行;
3.有参数的函数
【1】必选参数
必选参数是函数定义的时候括号里面的参数,如下面函数的x和y参数:
def add(x, y):
return x + y
【2】默认参数
我们在定义函数的时候可以给参数设置默认值:
def mypow(x,y=2):
"""
这个函数定义了两个参数,分别是x和y,其中y参数的默认值为2
因此在调用函数的时候如果不传参数y,那么python会自动给y赋值为2
"""
return x**y
【3】可变参数
在Python中,我们可以通过*args的形式定义一个参数,args这个可以自己命名,通过这种方式定义的参数为可变参数,其实本质上*args表示要接收的参数为一个元组,元组的个数是不确定的,因此叫可变。
下面举个例子:
#!/usr/bin/env python
# coding:utf-8
# --------------------------------
# Author :
# Email :
# Version :
# Create_date:
# Description:
# --------------------------------
def add(*args):
"""
计算多个数字的和
:param rgs: int类型的元组
:return: 传入参数的和
"""
count = 0
for i in args:
count += i
return count
def main():
# 我们可以通过调用__doc__函数获取sub函数的doc描述
print(add.__doc__)
# 计算 5 + 10 + 11
print(add(5, 10, 11))
if __name__ == "__main__":
main()
Output:
$ python main.py
计算多个数字的和
:param rgs: int类型的元组
:return: 传入参数的和
26
注: args可以改为其他变量名;args实质上是一个元组 ;
【4】关键字参数
关键字参数通过**kwargs的形式定义,传入的是不定长的命名参数(命名参数存储的是字典,相对于无命名参数存储的是元祖)kwargs可以自定义其他名称。
举个例子:
#!/usr/bin/env python
# coding:utf-8
# --------------------------------
# Author :
# Email :
# Version :
# Create_date:
# Description:
# --------------------------------
def add(*args, **kwargs): # 注意:当同时使用*args和**kwargs的时候,*args需要放到前面
"""
计算多个数字的和
:param rgs: int类型的元组
:return: 传入参数的和
"""
# kwargs是一个字典,这里输出值
print(kwargs["name"])
print(kwargs["function"])
# 计算args的和
count = 0
for i in args:
count += i
return count
def main():
# 我们可以通过调用__doc__函数获取sub函数的doc描述
print(add.__doc__)
print(add(5, 10, 11, name="add", function="计算5+10+11"))
if __name__ == "__main__":
main()
Output:
$ python main.py
计算多个数字的和
:param rgs: int类型的元组
:return: 传入参数的和
add
计算5+10+11
26
注:kwargs可以改为其他变量名; kwargs实质上是一个字典 ;
【5】返回值
函数的返回值前面已经用过了,这里需要注意的是函数中如果没有return时,默认返回None;另外Python中函数还可以返回多个值,多个返回值以英文逗号隔开即可:
举个例子:
#!/usr/bin/env python
# coding:utf-8
# --------------------------------
# Author :
# Email :
# Version :
# Create_date:
# Description:
# --------------------------------
def add(*args):
"""
计算多个数字的和
:param args: int类型的元组
:return: 传入参数的和
"""
# 计算args的和
count = 0
for i in args:
count += i
return count, "ok"
def main():
# 我们可以通过调用__doc__函数获取sub函数的doc描述
print(add.__doc__)
count, ok = add(5, 10, 11)
print("count:", count)
print("ok:", ok)
if __name__ == "__main__":
main()
Output:
$ python main.py
计算多个数字的和
:param args: int类型的元组
:return: 传入参数的和
count: 26
ok: ok
注:实质上 python只能返回一个值;间接通过元组返回多个值;
【6】函数的作用域
global关键字必须要先声明,再赋值,在下面的例子中可以看到,在函数内部通过global关键字定义了一个num,在函数外同样可以调用该参数。
【7】高级特性
isinstance判断是否可迭代;
4.列表生成式
生成列表的公式
需求: 生成一个列表, 返回1-100中偶数的平方;
【1】方法 1 :
【2】方法 2 :
【3】变异的列表生成式
- for 循环嵌套 if 语句 [i**2 for i in range(2,20) if i%2==0]
- for 循环嵌套 for 循环 , 两个字符串的全排列 [i+j for i in 'xyz' for j in '123']
测试:
找出/etc下文件中以.conf结尾的文件;