Byte of Python学习笔记三


七. 函数
函数定义
def 函数名称(参数):
      函数体
参数可以没有,可能有1个或多个参数

变量三种作用域:
1. 局部变量Local variables
局部变量在函数范围内有效,函数外不可见

2. 全局变量
函数体内可以直接引用全局变量,要给全局变量赋值需要使用global进行声明。如
x = 50
def func1():
    print('x is', x);
func1()

def func2():
    x = 60
    print('x is', x);
func2()
print('x is', x)

def func3():
    global x
    x = 70
    print('x is', x)
func3()
print('x is', x)
输出结果:
x is 50
x is 60
x is 50
x is 70
x is 70

3. 非局部变量nonlocal variables
作用域介于局部变量和全局变量之间,在内部函数(即函数中定义函数)体中定义,由nonlocal关键字声明。如:
x = 1
def func_outer():
    x = 2
    def func_inner(): www.2cto.com
        nonlocal x
        x = 5

        def func_inner_inner():
            nonlocal x
            x = 6
        func_inner_inner()
        print('x is', x)

    func_inner()
    print('x is', x)
func_outer()
print('x is', x)
输出结果:
x is 6
x is 6
x is 1

默认参数值
Python函数参数设置默认值,如果调用函数时没有给对应参数传值,则该参数采用默认值,默认值必须为常量且参数必须位于参数列表的最后。如
def say(message, times = 1):
      print(message * times)

say('Hello')
say('World', 3)
输出结果:
Hello
WorldWorldWorld

关键字参数
Python可以传递参数时可以通过名字将值传给指定参数。这样可以以任意顺序传入参数,还可以跳过前面的参数给后面的参数传值。如
def func(a, b=5, c=10):
      print('a is', a, 'and b is', b, 'and c is', c)

func(3,7)
func(25, c=24)
func(c=50, a=100)
输出结果:
a is 3 and b is 7 and c is 10
a is 25 and b is 5 and c is 24
a is 100 and b is 5 and c is 50

可变参数
通过*来标识可变位置参数,如*param将所有的位置参数收集放到名为param的列表中,供函数中使用
通过**来标识可变关键字参数,如**param将所有关键字参数收集到名为param的字典中,供函数使用
示例:
def total(initial=5, *numbers, **keywords):
    count = initial
    for number in numbers:
        count += number
    for key in keywords:
        count += keywords[key]
    return count
print(total(10, 1, 2, 3, vegetables=50, fruits=100))
输出结果:166

仅关键字参数
可以通过将参数放到可变位置参数(即前面有一个星号的参数)后面的方式限制参数keyparam必须通过关键字参数的方式传参,如
def total(initial=5, *numbers, vegetables, fruits):
    count = initial
    for number in numbers:
        count += number
    count += vegetables
    return count
print(total(10, 1, 2, 3, vegetables=50, fruits=60))
输出结果:66
说明:如果不需要可变位置参数,则可变位置参数可以只写一个星号,如total(initial=5, *, vegetables, fruits)

函数返回值
如果没有写return语句,则函数返回None,None是Python的一个特殊类型,类似Java语言的void. 如
def doNothing():
      pass
doNothing()
输出结果:None

DocStrings
类似Java的文档注释,放在函数(或类和模块)的第一行。DocStrings一般为多行字符串,按照惯例以大写字母开头,英文句号结尾,第二行为空行,第三行开始为函数(或类和模块)详细说明。
可以通过函数名.__doc__获取函数的DocStrings,help获取的帮助信息即来自函数的DocStrings

相关内容

    暂无相关文章

评论关闭