zoukankan      html  css  js  c++  java
  • python函数的可变和不可变参数

    在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
    不可变类型:
    a = 1 #把1赋值给a
    a = 2 #把2赋值a
    这一过程中其实是重新创建新的值为2的对象a,原先指向1的变量a 被废弃了

    可变类型:
    l = [1,2,3]
    l[0] = 99
    l这一过程中只是修改而已,l 指向这个列表的变量没有变化

            def changeList(self,mylist):
            mylist.extend([1,2,3])
            print('函数内的list: ',mylist)
    
        def changeInt(self,a):
            a = 10
            print('函数内的int: ',10)
    
    	if __name__ == '__main__':
        s = Student()
        l = [11,22,33]
        s.changeList(l)
        print('函数外的list:',l)
    
        a = 100
        s.changeInt(a)
        print('函数外的int: ',a)
    
     结果:
     函数内的list:  [11, 22, 33, 1, 2, 3]
     函数外的list: [11, 22, 33, 1, 2, 3]
     函数内的int:  10
     函数外的int:  100
    

      

    小结:
    从代码可以看出,不可变的参数传入后并函数外并没有改变值,具有不可变性;而列表,传入参数后列表内容发生改变,函数外的列表也一同发生改变,具有可变性。

    ===========================================================================
    以下是调用函数时可使用的正式参数类型:
    必需参数
    关键字参数
    默认参数
    不定长参数

    必须参数:
    调用该函数数必须传参数

        def fun(needValue):
            print(needValue)
    
    	fun(123)
    

    关键字参数:
    在调用函数的时候,可以指定关键字,此时可以不需要管函数的参数顺序。

        def fun(needValue):
            print(needValue)
        
        fun(needValue = 123)

    默认参数:
    如果定义函数的时候,参数是设置为默认的形式,在调用函数的时候,参数可以不需要填写。

        def fun(needValue=123):
            print(needValue)
    
    	fun()
    

    不定长参数:
    你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述 2 种参数不同,声明时不会命名。基本语法如下:
    *参数 表示以元组(tuple)的形式导入
    第一个参数为可选参数
    def functionname([formal_args,] *var_args_tuple ):
    “函数_文档字符串”
    function_suite
    return [expression]

        def fun(str,*args): #传两个参数,第一个是一个值的,第二个是一个元组
            print(str,args)
    
    	fun('kyd','a','b','c')
     结果:
    	kyd ('a', 'b', 'c')
    
     def fun(str,*args): #传两个参数,第一个是一个值的,第二个是一个元组
        print(str,args)
     
     fun('str') #只传第一个参数,第二个参数不传
     结果:
     kyd ()   得到结果是一个空元组
    
        def fun(*args): #只定义多参数的元祖
            print(args)
    
    	fun(1,2,3)
     结果:
     (1,2,3)	
    

    **args 不定长参数可以以字典的形式,基本语法:
    def functionname([formal_args,] **var_args_dict ):
    “函数_文档字符串”
    function_suite
    return [expression]

        def fun(str,**args):
            print(str)
            print((args))
    
    	fun('kyd',a=1,b=2,c=3) #注意调用函数的时候,字典的键值对以=分割
    	结果:
    	kyd
    	{'a': 1, 'b': 2, 'c': 3}
    

      

    原文:https://blog.csdn.net/qq_28779071/article/details/89819807 

     

  • 相关阅读:
    C++我们必须要熟悉的事之具体做法(3)——类的设计与声明
    C++我们必须要了解的事之具体做法(1)——构造、复制构造、析构、赋值操作符背后的故事
    STL hash table, Unordered Contains
    多个生产者——多个消费者模型(互斥量条件变量实现)
    将UNIX网络编程卷2的库函数合并到卷1的库函数中
    进程间通信(三)——Posix共享内存区
    进程间同步(1)——条件变量和互斥量
    进程间通信(二)——Posix消息队列
    python使用百度翻译api
    screen命令
  • 原文地址:https://www.cnblogs.com/qbdj/p/10855865.html
Copyright © 2011-2022 走看看