定义、调用函数:
定义函数时需要添加函数文档说明:
def print_menu():
''' 这是打印50个 - + 号用的 '''
print('-'*50)
print('+'*50)
a = input('请输入一个数:')
if a>=20:
print_menu() #先定义在调用 否则会报错
else:
print('你输入的数小于20')
可以定义多个函数 也可以在函数里调用函数。
注意:位置顺序是没有关系的(没有先定义哪个函数后定义哪个函数的说法,调用函数的时候需要根据整个功能的逻辑,来确定需要调用哪个函数):
带有参数的函数:
In [1]: def num_2 (a,b):
...: result = a+b
...: print('%d+%d=%d'%(a,b,result))
...:
In [2]: num1 = 678
In [3]: num2 = 569
In [4]: num_2(num1,num2)
678+569=1247
如果函数有三个参数的话,则调用函数时的参数也得有三个
使用return关键词进行改进程序:
In [5]: def num_2 (a,b):
...: result = a+b
...: return result
In [6]: num1 = 678
In [7]: num2 = 569
In [8]: rr = num_2(num1,num2)
In [9]: rr
Out[9]: 1247
return不是必须出现在函数里的,定义函数里面没有return关键词,那函数的执行结果 ’ '。
如果函数里没有return,则函数会从头到尾执行一遍。
如果函数里只有return后面没有变量,则函数执行到return 后面不再执行,函数返回结果为 ’ '。
return的作用:结束整个函数,return后面的代码就不执行了。
return关键词都可以返回一个变量名,还可以写一个字符串,还可以写一个数字…,总之:return后面的代码就是返回的内容,如果return后面没有任何代码那返回值就是None跟没有写return关键词的效果一样。
作用域的问题:
函数与函数之间是独立的,不能相互进行使用数据的。
如果想要上一个函数的变量可以用return找个变量接收一下,那个变量就可以用了。
全局变量和局部变量的区别:
全局变量和局部变量名字相同的时候:函数会使局部变量。
全局变量命名-建议:在变量名前加个g 如: g_a= 100。
在函数里修改全局变量的话需要先声明一下 如: global g_a=100。
列表、字典是可以当做全局变量进行使用。
缺省参数===形参的默认值:
In [11]: def num_2 (a,b= 20):
...: result = a+b
...: return result
...:
In [12]: num_2(a=20)
Out[12]: 40
总结:如果函数的参数有默认值的时候,在调用该函数的时候,如果没有传递该默认值的参数,那么就使用默认值的数值,如果传递了该默认值的参数,就使用你所传递的那个值。
命名参数:
下面在调用函数时c没有赋值 直接给d赋值 d这样的叫做命名参数
In [16]: def num_2(a,b,c=20,d=10):
...: result = a+b+c+d
...: return result
...:
...:
In [17]: num_2(10,30,d=80)
Out[17]: 140
注意事项:一般缺省参数和命名参数都需要放在所有参数的最后,前面的参数进行一一对应起来。
不定长参数:
*args :是一个元组 没有参数给到时 输出一个()。
**kwargs : 是一个字典,没有参数给到时 输出一个{ }。
总结:传递参数的时候不带变量名的通通给了args,带变量名的给了kwargs
不可变、可变类型
python中不可变的数据类型为:数字、字符串、元组。
python中可变的数据类型为:字典和列表。
交换变量的方法:
在python里很简单
In [18]: a = 12345678
In [19]: b = 'abcdefg'
In [20]: a,b = b ,a
In [21]: a
Out[21]: 'abcdefg'
In [22]: b
Out[22]: 12345678
递归:就是自己调用自己。
求5 的阶乘:
In [26]: def getNums(num):
...: if num>1:
...: return num* getNums(num-1)
...: else:
...: return num
...:
In [27]: a = 5
In [28]: b = getNums(a)
In [29]: b
Out[29]: 120
In [30]: c = 5*4*3*2*1
In [31]: c
Out[31]: 120