python_d04

这篇博客详细探讨了Python函数的各个方面,从定义、调用到返回值,深入讲解了参数、函数嵌套、名称空间和作用域。此外,还讨论了闭包、装饰器及其应用,包括有参装饰器的实现和装饰器的修正技巧。
摘要由CSDN通过智能技术生成

01 定义函数

# 01 语法:
#     def 函数名(参数1,参数2, ...):
#     """
#     文档注释
#     """
#     代码1
#     代码2
#     代码3
#     ....
#     return 返回值
#
# 02 定义函数时:只检测语法,不执行代码
# 03 定义函数的三种形式

# 定义函数的形式一:无参函数
# def foo():
#     print('from fooo')
#
# foo()

# def print_msg():
#     print('****************************************')
#     print('============welcome to ATM==============')
#     print('****************************************')
#
# def pay():
#     print('from pay')
# def check():
#     print('from check')
# def transfer():
#     print('from transfer')
#
# def run():
#     print("""
#     1 支付
#     2 查询
#     3 转账
#     """)
#     choice=input('>>:').strip()
#     if choice == '1':
#         pay()
#     elif choice == '2':
#         check()
#     elif choice == '3':
#         transfer()
#
# run()


# 定义函数的形式二:有参函数
# def bar(x,y):
#     print(x,y)
#
# bar(1,2)
#
# def max(x,y):
#     if x > y:
#         print(x)
#     else:
#         print(y)
#
# max(20,30)

# 定义函数的形式三:空函数
# def foo(x,y):
#     pass

# def get():
#     pass
# def put():
#     pass
# def auth():
#     pass
# def ls():
#     pass
# def cd():
#     pass

02 调用函数

# 调用形式一:语句形式
# def foo():
#     print('from foo')
#
# foo()

# 调用形式二:表达式形式
def max(x,y):
    if x > y:
        return x
    else:
        return y

# salary = max(3000,2000)
# annual_salary=salary * 12
# print(annual_salary)

# annual_salary=max(3000,2000) * 12
# print(annual_salary)

# 调用形式三:当做参数传给另外一个函数
def max(x,y):
    if x > y:
        return x
    else:
        return y

#3,2,1
res=max(max(3,2),1)
print(res)

03 函数的返回值

# 1、return
# 特点:return 是函数结束的标志,函数内可以有多个return
# 但是只要执行一个,函数就立即结束,并且把return后的值当做本次调用的结果返回

# def foo():
#     print('first')
#     return 1
#     print('second')
#     return 2
#     print('third')
#     return 3
#
# res=foo()
# print(res)

# 2、返回值注意:
# 2.1返回值没有类型限制
# def bar():
#     return {'x':1}
#
# print(bar())

# 2.2返回值没有个数限制,可以用逗号分开多个值,一次返回
# def bar():
#     return(1,'wxx',{'x':1})
#
# x,y,z=bar()
# print(x,y,z)


# 2.3 可以没有return,默认返回none
# def bar():
#     pass
#
# res=bar()
# print(res)

04 函数参数

# 一:函数的参数分为两大类:形参与实参
# 形参:指的是在定义函数时括号的参数,形参即变量名
# def foo(x,y):
#     print(x,y)

# 在调用函数时,实参的值会传给形参,这就是一个赋值操作

# 二:函数参数
# 1、位置参数:
# 1.1在定义函数时,按照从左到右的顺序依次定义的参数,称为位置形参
# 特性:位置形参必须被传值,多一个不行少一个也不行
# def foo(x,y,z):
#     print(x,y,z)

# foo(1,2,3)
# foo(1,2)  #报错TypeError: foo() missing 1 required positional argument: 'z'
# foo(1,2,3,4)  #TypeError: foo() takes 3 positional arguments but 4 were given
# 1.2 在调用函数时,按照从左到右的顺序依次传入的值,称为位置实参
# 特点:与形参一一对应
# foo(1,2,3)   #1 2 3
# foo(3,2,1)  #3 2 1

# 2、关键字实参:
# 在调用函数时,按照key=value的形式定义的实参,称为关键实参
# 特点:可以完全打乱顺序,但仍然能指名道姓地为指定的参数传值
# def foo(x,y,z):
#     print(x,y,z)
# foo(1,2,3)   #1 2 3
# foo(z=3,x=1,y=5)   #1 5 3

#位置实参与关键字实参可以混合使用
# 1、位置参数一定放到关键字参数的前面
# 2、同一个形参只能被赋值一次

# foo(1,2,z=3)   #1 2 3
# foo(1,y=2,z=3)   #1 2 3
# foo(1,z=3,y=2)   #1 2 3
# foo(z=3,y=2,1) #报错,位置参数一定放到关键字参数的前面 SyntaxError: positional argument follows keyword argument
# foo(1,z=3,y=2)  #1 2 3
# foo(1,z=3,y=2,z=30)  #报错:同一个形参只能被赋值一次 SyntaxError: keyword argument repeated
# foo(1,x=3,y=2)  #报错:位置参数一定放到关键字参数的前面  x等于是重复赋值了

# 3、默认参数:在定义函数时,就已经被赋值的参数,称为默认形参
# 注意
# 3.1在定义阶段就已经被赋值,意味着在调用阶段就可以不用传值
# def foo(x,y=10):
#     print(x,y)

# foo(1)  #1 10
# foo(1,3)  #1 3
# foo(y=4,x=1)  #1 4

# 3.2默认参数必须跟在位置形参的后面
# def foo(y=1,x):
#     pass    #报错,因为默认参数放在了前面SyntaxError: non-default argument follows default argument

# 3.3默认参数的值只在定义阶段被赋值一次就固定死了,定义之后改变没有影响
# m=10
# def func(x,y=m):
#     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值