Python函数之参数(二)

关键字参数和默认值

def hello_l(greeting, name):
    print('%s , %s!'%(greeting,name))

hello_l('Hello','world')#位置参数
hello_l(greeting='Hello',name='world')#关键字参数



输出:
Hello , world!
Hello , world!

例如,hello函数可能需要名字作为参数,但是也允许用户定义自己的名字,问候语和标点:

代码实现:

def hell_q(name,greeting='Hello',punctuation='!'):
    print('%s,%s%s'%(name,greeting,punctuation))


hell_q('Mars')
hell_q('Mars','Howdy')
hell_q('Mars','Howdy','...')
hell_q('Mars',punctuation='')
hell_q('Mars',greeting='Top of the morning to ya')


输出:
Mars,Hello!
Mars,Howdy!
Mars,Howdy...
Mars,Hello
Mars,Top of the morning to ya!

收集参数

让用户提供任意数量的参数:

例如能像下面这样存储多个名字:

store (data, name1,name2,name3)

给用户提供任意多的参数,可以像下面这样定义函数:

def print_params(*params):#参数前的星号将所有值放置在同一个元组中。(收集其余的位置元素)
    print(params)
print_params('Testing')
print_params(1,2,3)

输出:
('Testing',)#结果作为元组打印出来
(1, 2, 3)

处理关键字参数的时候,用“**”

代码:

def hih(**p):
    print(p)
hih(x=1,y=3,z=2)


输出:
{'x': 1, 'y': 3, 'z': 2}#可以看出输出的是一个字典而不是元组

作用域

变量可以看做是值的名字。在执行x=1赋值语句后,名称x引用到值1。这就像用字典一样,键引用值,变量和所对应的值用的是个“不可见”的字典。内建的Vars函数可以返回这个字典:

x=1
scope=vars()
print(scope['x'])
scope['x']+=1
print(x)


输出:
1
2

警告:一般来说,vars所返回的字典是不能修改的。

这类“不可见字典”叫做命名空间或者作用域。

函数内部的变量称为局部变量,函数外的变量称为全局变量。

嵌套作用域

Python函数是可以嵌套的,也就是说将一个函数放在另一个里面。

猜你喜欢

转载自blog.csdn.net/qq_38360675/article/details/84986890