Python-函数

def funcname(param1,param2,...):

    statements

在函数中没有与全局变量同名的变量时,我们可以直接读取全局变量的值(不提倡这么做,容易混淆)

要想在函数内对全局变量进行重新赋值,就得在函数内使用global语句

e.g.

number = 23

def assignnum():

    number=13

assignnum函数里的number只是一个局部变量,对它赋值不会改变全局变量number

def assignnum():

    global number

    number=13

global语句声明number是全局变量,此时修改的就是全局变量number的值了

nonlocal语句

python可以实现在一个函数中定义另一个函数,要在内层函数中使用外层函数的变量,就用nonlocal语句

def func_outer():
    x=5
    def func_inner():
        nonlocal x
        x=2
    func_inner()
    print(x)
func_outer

输出2

函数的缺省参数是从右向左的

def func(a,b=5): #ok

def func(a=5,b): #invalid

keyword arguments

#!/usr/bin/python

def func(a,b=5,c=10):
    print 'a=',a,'b=',b,'c=',c

func(3,7)
func(25,c=24)
func(c=50,a=100)

output:

a=3 b=7 c=10

a=25 b=5 c=24

a=100 b=5 c=50

VarArgs parameters

#!/usr/bin/python

def total(initial=5,*numbers,**keywords):
    count = initial
    for number in numbers:
        count+=number
    for keyword in keywords:
        count+=keywords[keyword]
    return count

print total(10,1,2,3,vagetables=50,fruits=100)

output:

166

*number用来装多出来的位置参数 1,2,3. number是由这些参数组成的list

**keywords用来装多出来的关键字参数 vagetables=50,fruits=100. keywords是由这些参数组成的字典

原文地址:https://www.cnblogs.com/johnsblog/p/3960248.html