首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python 怎样自定义函数

函数定义

函数定义的简单规则:

函数代码块以def关键词开头,后接函数标识符名称和圆括号(),任何传入参数和自变量必须放在圆括号中间

函数内容以冒号起始,并且缩进

若有返回值,Return[expression] 结束函数;不带return 表达式相当于返回None

函数通常使用三个单引号 '''...''' 来注释说明函数;函数体内容不可为空,可用 pass 来表示空语句;以下几个为简单的函数示例:

1 ''' some basic functions ''' 2 def func1(): # 函数无传入参数 3 print("func1") # 无return值 4 func1() # 函数调用 5 6 def func2(): 7 return("func2") # return 字符串 "func2" 8 print(func2()) 9 10 def func3(a,b): # 需传两个参数11 print("a+b = %d" %(a+b)) # print表达式,无return12 func3(3,4)13 14 def func4(a,b): # 需传两个参数15 return (a+b) # return a+b 的值16 print(func4(4,3))

函数调用

定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。

这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。

上面的例子中 func1() 就是无参数函数的调用; func3(3,4) 为有参数函数的调用

深入函数定义

默认参数值

最常用的一种形式是为一个或过个参数指定默认值。调用时,可不传入有默认值的参数。参考下例:

1 ''' advanced: 简单询问框 ''' 2 def ask_ok(hint, retries=4, complaint='Yes or no, please!'): # 仅有hint是必须要传入的,retries 和 complaint 均有默认值 3 while True: 4 u = input(hint) 5 if u in ('y','ye','yes'): # in 的用法;若用户回答在('y','ye','yes') return True 6 return True 7 if u in ('n','no','nop','nope'): # 若用户回答在('n','no','nop','nope') return False 8 return False 9 retries = retries -1 # 若用户输入不在之前所列,可重试,重试次数-110 if retries

  注意:默认值是在函数定义作用域被解析的,如下所示

1 '''默认值是在函数定义作用域被解析的'''2 i = 53 def print_i(var=i):4 print(var)5 i = 66 print_i() # 输出为5

重要警告:默认值只被赋值一次。这使得当默认值是可变对象时会有所不同,如列表、字典或大多数类的实例。如下例,函数在后续调用过程中会累积之前传给它的参数。

1 ''' 默认值只被赋值一次。这使得当默认值是可变对象时会有所不同,如列表、字典或大多数类的实例。 2 函数在后续调用过程中会累积之前传给它的参数。 3 ''' 4 def append_L(a,L=[]): # 必须传参a,L不必须,为list,默认为空 5 L.append(a) 6 return L 7 print(append_L(1)) # 给出参数 a=1, 此时 L 已变为 [1] 8 print(append_L(2)) # 输出 [1,2] 9 print(append_L(3)) # 输出 [1,2,3]10 11 ''' L缺省时,做改变L,而不是累积值,可像下方这样定义函数 '''12 def change_L(a,L=None):13 if L is None:14 L = []15 L.append(a)16 return L17 print(change_L(1)) # 给出参数 a=1, L为None18 print(change_L(2)) # 给出参数 a=2, L为None 输出 [2]19 print(change_L(3,[0])) # 给出参数 a=1, L=[0] 输出 [0,3]

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180115A0ZMCS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券