函数,对象,模块就是大人玩儿的游戏,基础部分的小儿游戏我们我们玩儿的差不多
的,开始来学习成人游戏吧~~~
①函数定义
>>> def my_pao(a,b):
... print("大炮游戏")... print(a+"想打"+b)
... print("打你妹呀!哼~")
...
>>> my_pao("heng","yue")
大炮游戏
heng想打yue
打你妹呀!哼~
②函数文档-特殊属性,一般方法的两边都是横线
>>> def my_pao():
... '这是一个a和b大炮的游戏'
... print("哼!打到人家了~~~")
...
>>> my_pao.__doc__
'这是一个a和b大炮的游戏'
PS:为了打印这个函数属性,废了有5分钟,坑还得自己填。
③函数参数:
关键字参数:>>> def pao(a,b): #关键字参数的用法
... print(a+'想打'+b)
...
>>> pao(a='heng',b='mi')
heng想打mi
>>> def pao(a='苍老师',b='我很厉害!'): #关键字参数实参可选择输入
... print(a+'->'+b)
...
>>> pao()
苍老师->我很厉害!
>>> pao('张老师')
张老师->我很厉害!
>>>
>>> pao('苍老师名言','我脱光衣服躺在镜头前是为了生存,而你衣冠楚楚的
站在镜 头前却只是为了私欲和欺骗')
苍老师名言->我脱光衣服躺在镜头前是为了生存,而你衣冠楚楚的站在镜头镜
头前却 只是为了私欲和欺骗
搜集参数:实现原理是函数把参数打包为一个元组,然后分片给每一个参数
如果函数的形参内有搜集参数,一定要放到最后位置,因为搜集参数的后边
默认都是搜集参数的范畴
>>> def pao(*params):
... print('zheshi a game of'+':', params[1])
...
>>> pao(356,'dapao',65.36)
zheshi a game of: dapao
>>> def pao2(oo,*p):
... print('第一个参数:',oo)
... print('搜集参数',p[1])
...
>>> pao2('dafeijie',45,56)
第一个参数: dafeijie
搜集参数 56
错误示例:
>>> def pao2(*p,oo):
... print('第一个参数:',p[1])
... print('第二个参数00:',00)
...
>>> pao2(56,23,00)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: pao2() missing 1 required keyword-only argument: 'oo'
在形参中直接赋值的时候,叫做默认参数,这样也能够避免搜集参数后边的
参数被错误识别
>>> def pao(*p,o=9):
... print("this is a game:",p[1])
... print("0 is:",o)
...
>>> pao(56,23)
this is a game: 23
0 is: 9
返回值:函数没有返回值的时候,打印出来是 None,返回
None对象,python的函数都会返回东西
>>> def helo():
... print('hello fish')
>>> p = helo()
>>> print(p)
None
两个示例:一个输出列表,另一个不标注格式的话,直接输出元组,python函数的输出很强大。
>>> def paopao():
... return [1,"fuck",236]
>>> paopao()
[1, 'fuck', 236]
... return 1,'fuck',3.14
>>> paopao()
(1, 'fuck', 3.14)
局部变量:在和这个函数的外部不可见!(比较简单,
就不举例子了,但是很重要)
全局变量:在函数内部尽量不要去修改全局变量的值,因为
python会在函数内部自动创建一个 名字相同的变量。
a = 655
b = 31.5
c =a
def pao(a,b):
'这是本函数的函数报告'
print('a+b的值为:',a+b)
print('通哥修改了一下全局变量a')
a+=9
print('a的值:',a)
if a != 655:
print(' a:我在函数内部,我被改动了')
print('我们是穷逼,但是课后题需要练习!')
pao(a,b)
print('全局变量a的值:',a)
if a != (655+9):
print(' 全局变量真的没有被函数在内部改变')
print('验证结束!')
自己写了一个验证局部变量的函数,得到输出:
a+b的值为: 686.5
通哥修改了一下全局变量a
a的值: 664
a:我在函数内部,我被改动了
我们是穷逼,但是课后题需要练习!
全局变量a的值: 655
全局变量真的没有被函数在内部改变
验证结束!