美文网首页
Python学习笔记-函数

Python学习笔记-函数

作者: 土豆吞噬者 | 来源:发表于2019-09-27 19:00 被阅读0次

    Python中函数以def关键词开头,后接函数标识符名称,圆括号括起来的参数列表,冒号。函数体内的return如果不带表达式或者没有return相当于返回None。函数体最前面可以使用字符串描述函数功能。

    def add(n1,n2):
        "这是一个加法函数"
        return n1+n2
    
    def add(n1,n2):
        """
        这是一个加法函数
        :param n1: 
        :param n2: 
        :return: 
        """
        return n1+n2
    
    

    Python中函数参数是引用传递,对于不可变类型,因为不能修改只能新建,所以不会影响到变量自身,而对于可变类型,则会影响到变量自身。

    def testFunc1(str):
        print(id(str))
        str+="123"
        print(id(str))
    
    
    value="test"
    print(id(value))
    testFunc1(value)
    print(id(value))
    print(value)  # test
    
    
    value=['t','e','s','t']
    print(id(value))
    testFunc1(value)
    print(id(value))
    print(value)  # ['t', 'e', 's', 't', '1', '2', '3']
    

    结果:

    1464254630688
    1464254630688
    1464254630800  # 新建了一个字符串
    1464254630688
    test
    1464254096008
    1464254096008
    1464254096008
    1464254096008
    ['t', 'e', 's', 't', '1', '2', '3']
    

    使用关键字参数允许函数调用时参数的顺序与声明时不一致,在函数调用中,关键字参数必须跟随在位置参数的后面。

    def testFunc(value1,value2):
        print(str(value1)+" "+str(value2))
    
    testFunc(value2=10,value1=100)  # 100 10
    testFunc(100,value2=10)  # 100 10
    testFunc(value2=10,100)  # 错误
    

    使用独立星号限制后面的参数必须使用关键字参数传递。

    def testFunc(value1,*,value2):
        print(str(value1)+" "+str(value2))
    
    testFunc(value1=100,value2=10)  # 100 10
    testFunc(100,value2=10)  # 100 10
    testFunc(10,100)  # 错误,testFunc() takes 1 positional argument but 2 were given
    

    调用函数时,如果没有传递参数则会使用默认参数。

    def testFunc(value1,value2=200):
        print(str(value1)+" "+str(value2))
    
    testFunc(10)  # 10 200
    

    如果参数数量不是固定的,可以在参数前面加上星号,传递的参数将被看作是元组,如果参数前面有两个星号,则传递的参数被看作是字典。

    def testFunc(*arguments, **keywords):
        print(arguments)
        print(keywords)
    
    testFunc(1,2,3,"abc",red="红色",green="绿色")
    

    结果:

    (1, 2, 3, 'abc')
    {'red': '红色', 'green': '绿色'}
    

    Python使用lambda关键字创建匿名函数,格式如下,lambda的主体是一个表达式,只能写一行。

    lambda [arg1 [,arg2,.....argn]]:expression
    
    addFunc=lambda n1,n2:n1+n2
    print(addFunc(1,2))
    

    相关文章

      网友评论

          本文标题:Python学习笔记-函数

          本文链接:https://www.haomeiwen.com/subject/rynfuctx.html