1.组成和意义
def 函数名(参数):
函数体
return 返回值
2.命名规则\规范
- 命名规则:
- 命名规范(无强制性,但有利于提高代码可读性)
- 大驼峰 FunctionName
- 小驼峰 functionName
- 下划线 function_name
3.参数
函数的参数可以分为位置参数、默认参数、动态参数三种类型,当然也可以不定义参数 ==定义参数/传参顺序:==位置参数-*args-默认参数-**kwargs
def hello():
print("hello world")
hello()
def get_num(num_1, num_2):
return num_1 + num_2
get_num(10,20)
def get_num(num_1, num_2):
return num_1 + num_2
get_num(10)
get_num(10,10)
- 动态参数:不定项参数
*args:把剩余参数以元组形式存储 **kwargs:把带有变量名的参数以字典形式存储
def test(*args,**kwargs):
print(args)
print(kwargs)
test(1,2)
print("="*50)
test(a=1,b=2)
print("="*50)
test(1,2,a=10,c=3)
"""
(1, 2)
{}
==================================================
()
{'a': 1, 'b': 2}
==================================================
(1, 2)
{'a': 10, 'c': 3}
"""
4.返回值
- 函数的返回值return:表示函数的结束,类似循环中的break
- 是否一定要有返回值?否,参照ls.sort(),没有定义return,默认返回值为None
- 函数的返回值可以是任意类型,根据返回值的类型
def test():
print("123")
return
print("我不会被执行")
def is_woman(sex):
if sex == "woman":
return True
else:
return False
is_woman("woman")
5.变量的作用域
- 全局变量 (实参)
- 局部变量 (形参)
- 作用于局部,在局部执行后被释放
- 函数、类中定义的变量成为局部变量
- global关键字用于在函数中声明使用全局变量
num = 10
def get_num():
num = 20
print(num)
get_num()
print(num)
"""
输出结果:
20 # 执行get_num()函数,num为局部变量中的num
10 # get_num中的局部变量num=20已被释放,此时num=10,故打印出10
"""
状态 | 结果 |
---|
未使用global声明变量and数据类型是简单类型(如:数值、字符串) | 函数中可以读取该变量,但不能修改 | 未使用global声明变量and数据类型是复杂类型(如:元组、列表) | 函数中可以读取和修改该变量 | 已声明变量 | 可以读取和修改变量 |
num = 10
def test():
return num
print(test())
ls = [1, 2, 3]
def test():
print(ls)
ls.append(4)
return ls
test()
print(ls)
num = 10
def test():
global num
num+=10
return num
print(test())
print(num)
6.匿名函数
常用场景:
info = [("a", 1), ("b", 3), ("c", 2), ("d", 4)]
info.sort(key=lambda x: x[1])
print(info)
匿名函数参考博客:https://blog.csdn.net/PY0312/article/details/88956795
|