Python学习(17--20)函数

参考视频:零基础入门学Python (作者:小甲鱼)

函数

创建函数 def XXX():

调用函数 XXX()

>>> def MyFirstFunction():
    print('第一个函数fmm')
    print('fmm加油')
    print('mm我想你')


>>> MyFirstFunction()
第一个函数fmm
fmm加油
mm我想你
>>> 

调用一个未定义的函数会报错
为了使函数每次的使用都有区别,加入了参数的概念,使得函数个性化

>>> def MySecondFunction(name):
    print(name+'我想你')


>>> MySecondFunction('mm')
mm我想你
>>> 

多个参数之间用逗号隔开,没有个数限制,但是不宜太多,三四个即可
函数的返回值:return

形式参数:定义时候
实际参数:传递时候

函数文档:相当于注释 不打印 与注释也有区别
>>> def MyFirstFunction1():
    '函数文档'
    #注释
    print('第一个函数fmm')
    print('fmm加油')
    print('mm我想你')


>>> MyFirstFunction1()
第一个函数fmm
fmm加油
mm我想你
>>> MyFirstFunction1.__doc__
'函数文档'
>>> print.__doc__
"print(value, ..., sep=' ', end='\\n', file=sys.stdout, flush=False)\n\nPrints the values to a stream, or to sys.stdout by default.\nOptional keyword arguments:\nfile:  a file-like object (stream); defaults to the current sys.stdout.\nsep:   string inserted between values, default a space.\nend:   string appended after the last value, default a newline.\nflush: whether to forcibly flush the stream."
>>> help(print)
Help on built-in function print in module builtins:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

>>> 

注意 doc左右是分别有两个_

关键字参数:

用关键字索引参数 而不是用顺序 这样以免参数多的时候传错

默认参数:定义了默认值的参数

收集参数:可变参数 搞不清到底需要多少参数的时候

>>> def test(*params):
    print('参数的长度',len(params));


>>> test(1,2,3,1)
参数的长度 4
>>> 

当收集参数后面还有定制参数的时候,需要使用关键字参数给出,或者将定制参数给出默认参数

函数与过程

过程没有返回值
Python严格来说 只有函数没有过程
函数没有返回值的时候会返回none
Python没有类型 可以返回多个值 即返回一个列表 【,,,,】或者元组(,,,)

作用域

局部变量:函数里的参数 局部生效 利用栈存储 函数执行完就自动删除 栈清空
全局变量:函数外的参数 作用域为整个模块
在函数内试图修改全局变量的话,Python会自动创建一个新的局部变量代替,在函数内就是一个局部变量,和全局变量互不影响
所以在函数内建议访问全局变量,不要改变

内嵌函数和闭包

global关键字 在函数内修改全局变量
内嵌函数:函数里定义函数
闭包:例如下面的Fy

>>> def Fx(x):
    def Fy(y):
        return x*y
    return Fy

>>> u = Fx(8)
>>> u
<function Fx.<locals>.Fy at 0x02ED7198>
>>> type(u)
<class 'function'>
>>> u(5)
40
>>> Fx(8)(8)
64
>>> Fy(8)
Traceback (most recent call last):
  File "<pyshell#33>", line 1, in <module>
    Fy(8)
NameError: name 'Fy' is not defined
>>> 

nonlocal关键字:强制声明为非局部变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值