函数
1 定义函数
def 函数名(参数):
代码1
代码2
. .....
2 调⽤用函数
函数名(参数)
注意:
- 不同的需求,参数可有可无。
- 在Python中,函数必须先定义后使用。
函数的参数:函数调⽤用的时候可以传⼊真实数据,增大函数的使用的灵活性
形参:函数定义时书写的参数(非真实数据)
实参:函数调用时书写的参数(真实数据)
函数的返回值
作⽤用:函数调用后,返回需要的计算结果
写法 return 表达式
变量作用域
局部变量
所谓局部变量是定义在函数体内部的变量,即只在函数体内部⽣效。
def testA():
a = 100
print(a)
testA() # 100
print(a) # 报错:name 'a' is not defined
局部变量的作用:在函数体内部,临时保存数据,即当函数调⽤用完成后,则销毁局部变量。
全局变量
所谓全局变量,指的是在函数体内、外都能⽣生效的变量。
函数参数
1.位置参数:调⽤用函数时根据函数定义的参数位置来传递参数。
def user_info(name, age, gender):
print(f'您的名字是{name}, 年年龄是{age}, 性别是{gender}')
user_info('TOM', 20, '男')
#传递和定义参数的顺序及个数必须一致
2.关键字参数
函数调用,通过“键=值”形式加以指定。可以让函数更加清晰、容易易使用,同时也清除了参数的顺序需求。
def user_info(name, age, gender):
print(f'您的名字是{name}, 年年龄是{age}, 性别是{gender}')
user_info('Rose', age=20, gender='⼥女女')
user_info('⼩小明', gender='男', age=16)
#函数调⽤时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字#参数之间不存在先后顺序。
3.默认参数/缺省参数
默认参数,⽤用于定义函数,为参数提供默认值,调⽤用函数时可不不传该默认参数的值(注
意:所有位置参数必须出现在默认参数前,包括函数定义和调⽤用)。
def user_info(name, age, gender='男'):
print(f'您的名字是{name}, 年年龄是{age}, 性别是{gender}')
user_info('TOM', 20)
user_info('Rose', 18, '⼥女女')
注意:函数调⽤用时,如果为缺省参数传值则修改默认参数值;否则使⽤用这个默认值。
4.不定长参数
不定长参数也叫可变参数。⽤用于不确定⽤的时候会传递多少个参数(不传参也可以)的场景。此时,可
⽤用包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递,会显得非常方便。
包裹位置传递:
def user_info(*args):
print(args)
# ('TOM',)
user_info('TOM')
# ('TOM', 18)
user_info('TOM', 18)
注意:传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为⼀一个元组(tuple),
args是元组类型,这就是包裹位置传递
包裹关键字传递:
def user_info(**kwargs):
print(kwargs)
# {'name': 'TOM', 'age': 18, 'id': 110}
user_info(name='TOM', age=18, id=110)
引用
python中,值是靠引用传递的。
我们可以用id()来判断两个变量是否是同一个值的引用。我们可以将id理解为那块内存的地址标识。
lambda表达式
lambda 参数列表 : 表达式
lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适⽤。
lambda函数能接收任何数量的参数但只能返回⼀个表达式的值
print(l(ambda a,b:a+b)(1,2))
map()
map(func, lst),将传⼊入的函数变量量func作⽤用到lst变量量的每个元素中,并将结果组成新的列列表(Python2)/
迭代器器(Python3)返回
list1 = [1, 2, 3, 4, 5]
def func(x):
return x ** 2
result = map(func, list1)
print(result) # <map object at 0x0000013769653198>
print(list(result)) # [1, 4, 9, 16, 25]
reduce(func(x,y),lst),其中func必须有两个参数。每次func计算的结果继续和序列列的下⼀一个元素做累
积计算。
注意:reduce()传⼊入的参数func必须接受2个参数。
filter(func, lst)函数⽤用于过滤序列, 过滤掉不符合条件的元素, 返回⼀一个 filter 对象,。如果要转换为列列表,
可以使⽤用 list() 来转换。
文件操作
1.打开文件
open(name,mode)
2.写
对象.write(‘内容’)
3.读
文件对象.read(num)