1. 函数定义
1 # 函数定义 2 # 通过关键字def来定义。这一关键字后跟一个函数的标识符,在跟一对圆括号,其中可以包括一些变量的名称,再以冒号结尾。另起一行的语句块是函数体。 3 # def 函数名(): 4 def say_hello(): 5 print('hello') 6 7 say_hello() # 函数调用
2. 函数参数
1 # 函数参数 2 def compare(a, b): # 两个参数a, b(形参) 3 if a > b: 4 print(a, 'is big') 5 elif a == b: 6 print('{} is equal to {}'.format(a, b)) 7 else: 8 print('{} is big'.format(b)) 9 10 compare(5, 5)
3. 默认值参数
1 # 默认参数值 2 ''' 3 目标:使一些参数可选并使用默认值 4 在函数定义时附加一个赋值运算符(=)来为参数指定默认参数值,默认参数值应该是常数,不可变 5 默认参数应位于函数参数列表最后(因为传参时按照参数所在位置依次分配的),即在函数的参数列表中,拥有默认参数值的参数不能位于没有默认参数值的参数之前。 6 ''' 7 def say_hello(a, times=1): 8 print(a * times) 9 10 say_hello('hello ') 11 say_hello('hello ', 5)
4. 关键字参数
1 # 关键字参数 2 ''' 3 如果你有一些具有许多参数的函数,而又希望只对其中的一些进行指定,就可以通过命名它们来給这些参数赋值 4 使用命名(关键字)而非位置来指定函数中的参数 5 优点1:我们不再需要考虑参数的顺序 6 优点2:可以只对那些我们希望的参数赋值,只要其他参数都具有默认参数值 7 ''' 8 def func3(a, b=5, c=10): 9 print('a = {}, b = {}, c = {}'.format(a, b, c)) 10 11 func3(3, 7) # a=3, b=7, c=10 12 func3(25, c=24) # 指定关键字参数c的值 a=25, b=5, c=24 13 func3(c=50, a=100) # 关键字参数c和a,不用考虑顺序 a=100, b=5, c=50
5. 可变参数
1 # 可变参数 2 ''' 3 若希望定义的函数里面有任意数量的变量(参数数量可变),可以通过使用星号来实现 4 通过序列和元组实现 5 ''' 6 def total(a=5, *numbers, **phonebook): 7 print('a', a) 8 9 # 遍历元组中的所有项目 10 for single_item in numbers: 11 print('single_item', single_item) 12 13 # 遍历字典中的所有项目 14 for first_part, second_part in phonebook.items(): 15 print(first_part, second_part) 16 17 print(total(10, 1, 2, 3, jack=1123, jone=2231, inge=1560))
6. return语句
1 # return 语句 2 ''' 3 return语句用于从函数中返回,也就是中断函数。在中断函数时,从函数中返回一个值 4 若return语句没有搭配任何一个值,则代表着返回None。None在python中是一个特殊的类型,代表着虚无。例:它用于指示一个变量没有值,如果有值则它的值便是None 5 每一个函数都在其末尾隐含了一句return None,除非你写了自己的return语句 6 ''' 7 def maxinum(x, y): # 例1 8 if x > y: 9 return x 10 elif x == y: 11 return 'x is equal to y' 12 else: 13 return y 14 15 print(maxinum(5, 5)) 16 17 18 def som_fun(): # 例2 19 pass # pass语句用于指示一个没有内容的语句块 20 21 print(som_fun()) # 打印None
7. 局部变量
1 # 局部变量 2 # 所有变量的作用域,是它们被定义的块,从定义它们的名字的定义点开始 3 x = 5 4 5 def func1(x): 6 print('x is', x) 7 x = 2 # 同名的局部变量的值改变,不影响同名的全局变量的值 8 print('local x is', x) # x = 2 9 10 func1(x) 11 print('global x is', x) # x = 5
8. 全局变量
1 # 全局变量 global 2 # 如果想给一个全局变量赋值,使用global关键字。因为在不使用global语句的情况下,不可能为一个定义于函数之外的变量赋值 3 # 使用global,为一个定义于函数之外的变量赋值(使用global告诉python,这一变量是全局的) 4 y = 5 5 6 def func2(): 7 global y # 使用global声明全局变量,若在函数体内有同名局部变量,赋值会影响全局变量 8 print('before modified y is', y) # y = 5 9 y = 2 10 print('modified y is', y) # y = 2 11 12 func2() 13 print('global y is', y) # y = 2
7. 文档字符串docstring
1)函数的文档字符串
1 # 文档字符串 DocString 2 """ 3 函数的第一行逻辑行中的字符串,是该函数的文档字符串(也适用于模块和类) 4 规则:多行字符串 5 约定格式:第一行以某大写字母开始,以句号结束。第二行为空行。第三行任意说明 6 """ 7 def print_max(x, y): 8 """ 9 Prints the maximum of two numbers. 打印两个数值中的最大数。 10 11 :param x: 12 :param y: 13 :return: 14 """ 15 x = int(x) 16 y = int(y) 17 18 if x > y: 19 print(x, 'is maximum') 20 else: 21 print(y, 'is maximum') 22 23 print_max(3, 5) 24 print(print_max.__doc__) # 打印docstring(获取函数print_max的__doc__属性)
2)类和方法的文档字符串:
1 class A: 2 """类A的文档字符串""" 3 def fun_A(self): 4 """方法A的文档字符串""" 5 pass 6 7 8 print(A.__doc__) # 访问类的文档字符串 9 print(A.fun_A.__doc__) # 访问方法的文档字符串