(9)我们一起学Python;函数(函数参数)

函数,对象,模块就是大人玩儿的游戏,基础部分的小儿游戏我们我们玩儿的差不多

的,开始来学习成人游戏吧~~~

①函数定义

    >>> 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]


    >>> def paopao():
    ...     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
     全局变量真的没有被函数在内部改变
验证结束!

猜你喜欢

转载自blog.csdn.net/weixin_34981646/article/details/80746254