python函数参数传递

2017-04-24  本文已影响0人  zhuwen

今天学习到python函数传递的一些内容,和其他语言的参数传递有很多类似的地方,也有很多是python语言专有的一些特性,记录下,我对python函数参数传递的一些认知。

函数

python函数是一些已经记录好的,可以重复使用的一些代码。函数的定义语句如下所示:

def functionname( parameters ):
   "函数_文档字符串"
   function_suite
   return [expression]

在函数的使用中,参数是必不可少的部分,让我们来看下,几乎所有语言都拥有的函数传递是一种传递方式是怎么样的:

def hello(name):
       print "hello"+name
hello("john")

在这一段函数之中,hello函数接受一个参数john,最终函数也会输出hello,john为结果。
当然,函数自然也支持多个参数的传递

def printinfo( name, age ):
   "打印任何传入的字符串"
   print "Name: ", name;
   print "Age ", age;
   return;
 
#调用printinfo函数
printinfo( 'miki',50);

这个特性显而易见,而且在其他语言之中也非常常见,下面让我们看下,python之中特有的一些机制,首先是参数顺序的转换

def printinfo( name, age ):
   "打印任何传入的字符串"
   print "Name: ", name;
   print "Age ", age;
   return;
 
#调用printinfo函数
printinfo( age=50, name="miki" );

函数顺序转换完成之后,函数一样能被调用。得到一样的输出结果,这在其他很多语言中并不具备这样的功能

python的变量传递功能并不仅仅只限于这样的功能,当加了星号(*)的变量名会存放所有未命名的变量参数。选择不多传参数也可。如下实例

  #!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 可写函数说明
def printinfo( arg1, *vartuple ):
   "打印任何传入的参数"
   print "输出: "
   print arg1
   for var in vartuple:
      print var
   return;
 
# 调用printinfo 函数
printinfo( 10 );
printinfo( 70, 60, 50 );

python函数参数传递还有着将字典或者列表传递的过程和其反转过程:

#!/usr/bin/python
def story(**kwds): 
        return 'Once upon a time there was a '\
                '%(job)s called %(name)s.'% kwds
def power (x,y,*others):
        if others:s                print 'Received redundant parameters:'.others
        return pow(x,y)
def interval(start,stop=None,step=1):
        'Imitates range() for step > 0' 
        print start,stop
        if stop is None: 
                start,stop = 0,start
        print start,stop
        result = []
        i = start
        while i < stop:
                result.append(i) 

在上述例子中,使用**kwd 参数,当我们传递的内容是里面所需要的job和name的时候,

print story(job = 'king', name ='gumby'  )

参数会自动往里面传递
这个特性特别有意思

args = {name:'aa',job='aa'}
print story(**args)

当往里面传递一个字典时,结果和单个参数的键值对类似。

上一篇 下一篇

猜你喜欢

热点阅读