函数的简单介绍

本文深入解析Python函数的定义与调用,包括位置参数、关键字参数、默认值及可变参数的使用,探讨如何避免默认参数陷阱,并介绍获取函数文档说明的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数:带名字的代码块
 

>>> def greet_user(usename):    # 用def给函数定义  记得:
...     #下面是函数体
...     """显示简单的问候语"""    #解释函数的功能   文档说明
...     print("Hello " + usename )
...
>>> greet_user("TOM")    # 调用函数    一个函数可以调用多次
Hello TOM

note:位置参数,关键字参数,默认值,可变参数(两种方式)
1.   *(python接收到的是元组) 可以在list和tuple加*作为变量传递给函数,但形参,实参都要前面都要加*
2. **  (python接收到的是字典) 对于关键字参数,函数的调用者可以传入任意不受限制的参数,用in判断到底传入了那些参数。如果要限制关键字参数的名字(命名关键字参数),可以在前面加上*,如果前面有可变参数,就不需要加上*号。同样命名关键字参数可以有缺省值。对于任意的函数都可以通过 func(*args,**kw)

获取文档说明的两种方法:
1.函数名.__doc__   (greet_user.__doc__) 双下划线
2.help(函数名)

默认参数一个坑:

>>> def add_end(L=[]):
...     L.append('END')
...     return L
...
>>> #正常调用
... add_end([1,2,3])
[1, 2, 3, 'END']
>>> add_end(['x','y','z'])
['x', 'y', 'z', 'END']


>>> #使用默认参数调用
... add_end()
['END']
>>> add_end()
['END', 'END']
>>> add_end()
['END', 'END', 'END']

python在定义时,默认参数也是一个变量,等于[],它指向[].每次调用该函数,如果改变了L的值,则下次调用时,参数的值就改变了。
定义默认参数时,默认参数必须指向不变。(本例中必须一直指向[])
可以通过None实现
 

>>> def add_end(L=None):
...     if L is None:
...         L = []
...     L.append('END')
...     return L
...
>>>
>>> #使用默认参数调用
... add_end()
['END']
>>> add_end()
['END']
>>> add_end()
['END']

None 这样的不变对象一旦创建,对象的内部数据就不能修改,这样就减少了由于修改数据导致的错误。此外,由于对象不变,多任务环境下同时读取对象不需要加锁,同时读一点我呢提都没有,在编写程序时,尽量设计成不变对象
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值