Python 参数

于2017-06-20由小牛君创建

分享到:


1.1.  参数

以下是调用函数时可使用的正式参数类型:

l  必备参数

l  关键字参数

l  默认参数

l  不定长参数

 

示例1:

# coding=utf-8
 
#
函数申明
 
def printinfo1(name, age=35):
   
"打印任何传入的字符串"
   
print "Name: ", name;
   
print "Age ", age;
   
return;
 
def printinfo2(name, age, *lessons):
   
"打印任何传入的字符串"
   
print "Name: ", name;
   
print "Age ", age;
   
for lesson in lessons:
       
print lesson
   
return;
 
 
# 使用关键字参数允许函数调用时参数的顺序与声明时不一致
 
printinfo1(age=50, name="miki")
 
# 缺省参数可以省略,则传入默认值
 
printinfo1("miki")
printinfo2(
"miki", 33, "python", "c++", "java", 12)
 

 

结果:

Name:  miki

Age  50

Name:  miki

Age  35

Name:  miki

Age  33

python

c++

java

12

 

上例printinfo1函数申明中

name是必备参数,是必须传入的参数

age是默认参数,可以不传入参数,=右边的是不传入参数时的默认值

调用函数时,传入的参数类型顺序必须与函数定义的参数类型顺序一致。

但使用关键字参数,则可以调用时参数的顺序与声明时不一致

 

上例printinfo2函数申明中

lessons是不定长参数,不定长参数只能申明一个,而且只能申明在最后面,不定长参数也可以不传入任何参数。由于不定长参数的存在,申明默认参数则没有任何意义。

 

 

1.2.  匿名函数

python 使用 lambda 来创建匿名函数。

l  lambda只是一个表达式,函数体比def简单很多。

l  lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

l  lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。

 

语法

lambda函数的语法只包含一个语句,如下:

lambda [arg1 [,arg2,.....argn]]:expression

示例:

# coding=utf-8
 
#
可写函数说明
 
sum = lambda arg1, arg2: arg1 + arg2
 
 
# 调用sum函数
 
print "相加后的值为 : ", sum(10, 20)
 
print "相加后的值为 : ", sum(20, 20)
 

 

结果:

相加后的值为 :  30

相加后的值为 :  40

 

1.3.  return 语句

return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。

 

示例:

# 可写函数说明
 
def sum( arg1, arg2 ):
  
# 返回2个参数的和."
  
total = arg1 + arg2
  
print "函数内 : ", total
  
return total;
 
 
# 调用sum函数
 
total = sum( 10, 20 );
 
print "函数外 : ", total
 

 

结果:

函数内 :  30

函数外 :  30

 

1.4.  全局变量和局部变量

定义在函数内部的变量拥有一个局部作用域,称为局部变量,只能在其被声明的函数内部访问。

定义在函数外的拥有全局作用域,称为全局变量,可以在整个程序范围内访问。

 

调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。

 

示例:

# coding=utf-8
 
 
total = 0; # 这是一个全局变量
# 可写函数说明
 
def sum( arg1, arg2 ):
  
#返回2个参数的和."
  
total = arg1 + arg2 # total在这里是局部变量.
  
print "函数内是局部变量 : ", total
  
return total
 
 
#调用sum函数
 
sum( 10, 20 )
 
print "函数外是全局变量 : ", total
 

 

结果:

函数内是局部变量 :  30

函数外是全局变量 :  0

 

如果要给全局变量在一个函数里赋值,必须使用 global 语句。

global VarName 的表达式会告诉 Python, VarName 是一个全局变量,这样 Python 就不会在局部命名空间里寻找这个变量了。

例:

# coding=utf-8
 
 
Money = 2000
 
def AddMoney():
  
global Money
   Money = Money +
1
 
 
print Money
AddMoney()
 
print Money
 

 

结果:

2000

2001