文章目录
- 函数
-
- 一、函数介绍
-
- (一) 什么是函数
- (二) 为何要有函数
- (三) 如何使用函数
- (四) 实例
- (五) 定义函数的三种形式
- (六) 调用函数的三种形式
- (七) 函数返回值return
- 二、函数中的参数
-
- (一) 函数中的参数分为形参与实参
- (二) 形参与实参详细介绍
-
- 一、位置参数
- 二、关键字实参
- 三、默认形参
- 四 关键字实参
- 五 可变长参数
- 六 了解
- 三、函数对象
-
- 四、函数嵌套
- 五、名称空间与作用域
-
- (一) 名称空间
- (二) 作用域
- (三) global、nonlocal
- (四) LEG
- 六、闭包函数
- 七、装饰器
-
- (一) 什么是装饰器
- (二) 为何要用装饰器
- (三) 如何使用装饰器
-
- 例1
- 例2
- 例3
- 例4:直接通过参数为函数体传参
- 例5:直接通过参数为函数体传参
- 例6
- 例7:语法糖
- 例8
- (四) 有参装饰器
- (五) 叠加多个装饰器
- 八、迭代器
-
- (一) 什么是迭代器
- (二) 为甚要用迭代器
- (三) 如何使用迭代器
-
- 九、生成器
- 十、递归
-
- 十一、匿名函数
- 十二、面向过程编程
- 十三、三元表达式
- 十四、生成器
-
- 作业
- 答案
函数
一、函数介绍
(一) 什么是函数
函数就是一个盛放代码的容器
具备某一功能的工具----》函数
事先准备工具的过程====》函数的定义
遇到应用场景拿来就用==》函数的调用
(二) 为何要有函数
(1)、程序的组织结构不清晰、可读性差
(2)、代码冗余
(3)、程序的可维护性差
(三) 如何使用函数
使用基本原则:先定义,后调用
定义函数的语法:
def 函数名(参数1,参数2,参数3,...):
"""文档注释"""
代码1
代码2
代码3
...
return 返回值
调用函数
函数名(值1,值2,值3,...)
def func(n,msg):
print('-'*n)
print(msg)
print('-'*n)
func(10,'hello')
func(5,'world')
def func():
xxx
func()
(四) 实例
def bar():
print('from bar')
def foo():
print('from foo')
bar()
foo()
def foo():
print('from foo')
bar()
def bar():
print('from bar')
foo()
(五) 定义函数的三种形式
def login():
name= input('username>>>: ').strip()
pwd = input('username>>>: ').strip()
if name == 'egon' and pwd == "123":
print('login successful')
else:
print('username or password error')
login()
def max2(x,y):
if x > y:
print(x)
else:
print(y)
max2(10,20)
max2(111,222)
def func():
pass
(六) 调用函数的三种形式
input("please input your name: ")
def max2(x,y):
if x > y:
print(x)
else:
print(y)
max2(11,22)
name = input("please input your name: ")
def max2(x,y):
if x > y:
return x
else:
return y
res=max2(111,222) * 12
def max2(x,y):
if x > y:
return x
else:
return y
print(max2(111,222))
print(max2(max2(111,222),333))
(七) 函数返回值return
def func():
print('hello1')
return 111
print('hello2')
return 222
print('hello3')
return 333
func()
def func():
return 1,33.3,[1,2,3]
res=func()
print(res)
def func():
pass
res=func()
print(res)
二、函数中的参数
(一) 函数中的参数分为形参与实参
def func(x,y):
print(x,y)
func(1,2)
(二) 形参与实参详细介绍
一、位置参数
def func(x,y):
print(x,y)
func(1,2)
func(1,2,3)
func(1)
def func(x, y):
print(x, y)
func(1,2)
二、关键字实参
def func(y=2,x=1)
func(111,y=2)
func(y=2,111)
func(111,x=222,y=333)
三、默认形参
def func(x, y=222):
print(x)
print(y)
func(111)
func(111, 333)
def register(name, age, gender="male"):
print(name, age, gender)
register('tom', 18)
register('jack',29)
register('wuchangwen',19)
register('lili',19,"female")
m=100
def func(x,y=m):
print(x)
print(y)
m=200
func(1)
m=[1,2,3]
def func(x,y=m):
print(x)
print(y)
m=200
func(1)
m.append(444)
func(1)
def register(name,hobby,hobbies=None):
if hobbies is None:
hobbies = []
hobbies.append(hobby)
print("%s 的爱好是 %s" %(name,hobbies))
register('egon','read')
register('jack','music')
register('lili','play')
四 关键字实参
def func(x,y):
print(x,y)
func(y=222,x=111)
func(111,y=222)
func(y=222,111)
func(1111,222,y=333)
func(x=111,y=222,x=333)
五 可变长参数
def func(x,y,*args):
print(x)
print(y)
print(args)
func(1,2,3,4,5)
def my_sum(*args):
res = 0
for v in args:
res+=v
return res
print(my_sum(1,2,3,4))
def func(x,y,**kwargs):
print(x)
print(y)
print(kwargs)
func(1,y=2,a=1,b=2,c=3)
def func(x,y):
print(x)
print(y)
func(*[111,222])
func(*"he")
func(*"hel")
func(*{
"k1":1111,"k2":2222})
func(**{
"y":111,"x":2222})
def index(x,y,z):
print(x)
print(y)
print(z)
def wrapper(*args,**kwargs):
index(*args,**kwargs)
wrapper(1,2,3,4,5,a=1,b=2,c=3)
wrapper(1,z=3,y=2)
def index(x,y):
print('index===>',x,y)
def wrapper(*args,**kwargs):
index(*args,**kwargs)
wrapper(1,y=2)
六 了解
def func(x,y=666,*args,m=777,n,**kwargs):
print(x)
print(y)
print(args)
print(m)
print(n)
print(kwargs)
三、函数对象
def func():
print('from func')
x=10
应用
def login():
print('登录...')
def register():
print('注册...')
def tranfer():
print('转账...')
def withdraw():
print("提现功能。。。")
func_dic={
"1":["登录",login],
"2":["注册",register],
"3":["转账",tranfer],
"4":["提现",withdraw]
}
while True:
for k,v in func_dic.items():
print(k,v[0])
choice = input("请输入您的命令编号,输入0退出:").strip()
if choice == "0":
break
if choice in func_dic:
func_dic