Python函数参数--关键字参数、默认参数,以及参数的反转过程

       1、函数简介

        函数是执行某种行为并可能返回值的一系列代码,函数的参数在圆括号中。判断某个函数是否可以执行,可以通过内建的callable函数来判断(callable在Python3.0中已不再使用,需要使用hasattr表达式)。判断过程如下:

import math
x=1
y=math.sqrt

callable(x)  #返回False
callable(y)  #返回True

      2、 函数的文档字符串

       可以通过函数的__doc__属性来获取函数的文档字符串。函数的文档字符串就是在函数的开头写下的字符串,用来对函数功能等进行解释说明。如下面函数中的'this function is just a test.'就是文档字符串。获取下面函数文档字符串的方法是:test1.__doc__,获取math模块中sqrt函数的文档字符串的方法是:math.sqrt.__doc__

def test1():
    'this function is just a test.'
    pass

       3、 函数的返回

        并非所有的函数都有返回值,但是所有的函数都会返回东西。当函数没有返回值时,返回的是None。当函数需要返回多个数值时,可以通过return返回元组、列表、字典等来包含多个数值。

       4、参数值的改变

        当函数获取实参后,有的可以在参数内部将实参进行修改,有的则不能修改。能不能修改,取决于参数的类型,并不是在函数内部对参数重新赋值就能够改变参数的值。

        字符串、数字、和元组是不可变的,即无法被修改的(即在函数内部不能真正改变传入的参数)。当参数是列表、字典时是可以修改的。字符串、数字、元组类似于C中的值传递,列表、字典类似于c中的引用传递。

       当参数是列表,而又不想修改传入参数时,可以通过整个列表的分片来传入列表的一个副本。即当name是一个列表时,则传入name[:]来避免在函数内部将参数改变。

       5、关键字参数和默认参数

       普通的参数称为位置参数。有的时候,如果参数太多顺序不太好记,因此使用参数名提供参数的方式来解决。即在调用函数时使用 形参名=实参名  的方式来传递参数。这样虽然打的字多了,但是变得更清晰。

      默认参数是给参数提供默认值,即在定义函数的时候为参数提供一个默认值。

     注意:位置参数和关键字参数可以联合使用,但必须位置参数在前面。

       6、使用任意数量的参数

       处理多余位置参数,可以在定义函数时指定一个参数并在前面加上星号。这样函数将称该参数作为元组,将所有的多余位置参数放置在该元组中。

     处理多余关键字参数,可以在定义函数时指定一个参数并在其前面加上两个星号。这样函数将该参数作为字典,将所有的多余关键字参数放置在该字典中。

      7、反转过程

       当为函数提供的参数是元组或字典时,有两种情况。

      一、函数定义时在参数前使用*或**来收集参数。那么为该函数传递元组或字典时,需要在是实参前也相应的加上*或**来对实参进行反转。

     二、函数定义时,形参是一个普通参数。那么为该函数传递元组或字典时,不用在实参前加*或**了,直接在函数内部将该参数作为元组或字典使用。

如:

def with_twostars(**params):
    print params['name']

def with_nostar(param2):
    print param2['name']
    
#调用函数方法   
var1={'name':'jinglingshu','sex':'female'}
with_twostars(**var1)  #实参需要进行反转
with_nostar(var1)

     

 

      

你可能感兴趣的:(Python函数参数--关键字参数、默认参数,以及参数的反转过程)