• 第八章 函数


    #1.
    #A:函数的定义与使用
    #B:传递实参的方法有:位置实参、关键字实参,还可以使用字典和列表
    #C:python不支持函数重载
    #D:函数默认形参必须是不可变对象,可以指定为None
    def fun(value0, value1 = None, value2 = "szn"):
        print(str(value0) + " " + str(value1) + " " + str(value2))
    fun(1, 2, "s")                              #1 2 s
    fun(value0 = 1, value1 = 2)                 #1 2 s
    fun(value0 = 'szn', value1 = 1, value2 = 2) #szn 1 2
    fun(1)                                      #1 None szn
    fun('szn', value2 = 1, value1 = 2)          #szn 2 1
    #fun(value0 = 'szn', 1, 2)                  #运行出错
    
    #2.
    #A:对于不可变参数作为函数形参时候,相当于C++的传值调用,比如字符串,数字都是不可变的
    #B:对于可变参数作为函数形参时候,相当于C++的传引用调用,比如列表,字典都是可变的
    def fun(value):             #此fun函数会覆盖上一个定义的fun函数
        value = 10
    value = 1
    fun(value)
    #fun(value0 = 'szn', value1 = 1, value2 = 2)#运行会出错
    print(value)                #1
    
    def fun(value):
        value.append(10)
    Test = [1]
    fun(Test)
    print(Test)                 #[1, 10]
    
    #3.
    #A:函数返回值
    def fun(value):
        value.append(0)
        return value
    Test = [1]
    Test1 = fun(Test)
    Test1[0] = 2
    print(Test)                 #[2, 0]
    print(Test1)                #[2, 0]
    
    #4.
    #A:传递任意数量的实参
    def fun(*value):            #*value将创建一个空的元组,将所有接受到的值都放入其中
    #   value[0] += 1           #运行会出错
        print(value[0])         #1
        print(value)            #[1, 's']
    fun(1, 's')     
    
    #5.
    #A:结合使用位置实参和任意数量的实参,必须在函数定义中将接纳任意数量实参的形参放在最后
    def fun(size, *value):
        print(str(size), end = " ")
        for v in value:
            print(str(v), end = " ")
    fun(10, 1, 2, 3)            #10, 1, 2, 3
    print("")
    
    #6.
    #A:可以让函数接受任意数量的键-值对
    def fun(value0, **value1):
        print(str(value0), end = ' ')
        print(value1)
    fun(10, value1 = '3', value2 = {1: 's'})    #10 {'value2: {1: 's'}', 'value1': '3'}
    Test = {'3' : 2, 's' : 1}   #这里的键值必须是字符串类型
    fun(10, **Test)             #10 {'3': 2, 's': 1}
    print("")
    
    #7.
    #A:将函数存储在被称为模块的独立文件中,再将模块导入到主程序中。import语句允许在当前运行的程序文件中使用模块中的代码
    #B:一般import应该放在程序开始的地方
    import Te                   #Te文件只需存在当前目录下即可 这句代码让Te里的所有函数可以被使用 并且当此文件是第一次被导入当前文件的时候,会从上到下执行Te文件里的代码
                                #Te.py
    print("import")             #import
    Te.TeFun()                  #Te.py
    #TeFun()                    #出错
    print("")
    
    from Te import TeFun        #由于Te文件不是第一次被导入,所以不执行Te里面的代码
    TeFun()                     #Te.py
    
    #8.
    #A:如果导入的函数名称太长或者与当前文件的函数名称存在冲突,可以在导入函数的时候使用as给函数指定一个别名
    #B:可以给导入的模块重命名
    #C:使用*可以导入模块里的所有函数,但是不推荐使用,容易产生名字冲突
    print("")
    import Te as T
    T.TeFun()                   #Te.py
    from Te import TeFun as TFun#由于Te文件不是第一次被导入,所以不执行Te里面的代码
    TFun()                      #Te.py
    from Te import*             #由于Te文件不是第一次被导入,所以不执行Te里面的代码 不建议使用这种方法
    TeFun()                     #Te.py
    

      

  • 相关阅读:
    面试官:Redis 有哪些拓展方案?
    面试官:为什么要合并 HTTP 请求?
    Java 调用第三方接口,实战来了!
    Java 如何模拟真正的并发请求?
    如何搭建一台永久运行的个人服务器?试试这个黑科技!
    vs2005 sp1 出来啦!!
    2007年第一帖
    xp pro sp2支持多个用户同时终端连接
    msn中实现 "添加一个活动或游戏邀请"
    softether
  • 原文地址:https://www.cnblogs.com/szn409/p/6506085.html
Copyright © 2020-2023  润新知