Python3 (入门3) 函数

来源:互联网 发布:安卓网络配置文件路径 编辑:程序博客网 时间:2024/05/16 10:55

原文: http://blog.csdn.net/Rozol/article/details/69242050

      • 函数
        • 匿名函数
        • 位置参数 和 关键字参数 的混合使用
      • 变量
        • 修改全局变量
      • 调用自定义模块
      • 动态导入模块

函数

匿名函数

位置参数 和 关键字参数 的混合使用

变量

修改全局变量

调用自定义模块

动态导入模块

#coding=utf-8# function.py 函数import sys # 导入模块sys.setrecursionlimit(5000) # 修改函数递归次数限制(默认为1000)# === 函数 ===def function1(): # 无参函数    print("×参数 ×返回") # 无返回def function2(arg1, arg2): # 带参函数(位置参数)    return "√参数 √返回" # 有返回def function2_1(arg1, arg2):    return arg1, arg2 # 元组形式返回多个值def function3(*args): # 不定长参数(位置参数),把位置参数(*args)转成元组    print("function3: ", args) def function3_1(**kwargs): # 不定长参数(关键字参数), 把关键字参数(**kwargs)转成字典    print("function3_1: ", kwargs) def function4(arg1 = 5): # 缺省参数(不传参将使用默认值)(注意:Python不支持函数重载,该方式解决了重载问题)    print("function4:%s"%arg1)def function5(arg1):    print("function5:%d"%arg1)    if(arg1 >= 10):        return    arg1+=1    return function5(arg1) # 递归函数(默认递归次数限制为1000), 递归层次太多可能会导致栈溢出(递归效率不高)none = lambda : print("none")  # 匿名函数 (无参 无返回)add = lambda arg1, arg2: arg1 + arg2 # 匿名函数 (带参 有返回)# === 位置参数 和 关键字参数 的混合使用 ===def function6(arg, *args):    print("function6: ", arg)    print("function6: ", args)def function7(arg, age=21, **kwargs):    print("function7: ", arg)    print("function7: ", age)    print("function7: ", kwargs)def function8(arg, age=21, *args, **kwargs): # 位置参数 只能写在 关键字参数 前面    print("function8: ", arg)    print("function8: ", age)    print("function8: ", args)    print("function8: ", kwargs)# === 变量 ===global_var = 123 # 全局变量,作用域整个程序global_var_c = 321def localvariable():    local_var = 456 # 局部变量, 作用域在子程序    global_var_c = 123 # 子程序不能修改全局变量(引用(如:list,class)除外)     print("global_var: {}; global_var_c: {}; local_var: {}".format(global_var, global_var_c, local_var)) # => 123, 123, 456localvariable()print("global_var: {}; global_var_c: {}".format(global_var, global_var_c)) # => 123, 321# === 修改全局变量 ===global_list = {"num" : 123}def localvariable_cg():    global_list["num"] = 321    print("global_list: {}".format(global_list)) # => {'num': 321}localvariable_cg()print("global_list: {}".format(global_list)) # => {'num': 321}# === 修改全局变量的作死写法 (不建议使用这种写法, 容易造成全局变量使用混乱) ===global_err = 123def localvariable_err():    global global_err    global_err = 321    print("global_err: {}".format(global_err)) # => 321localvariable_err()print("global_err: {}".format(global_err)) # => 321if __name__ == "__main__":    # --- 普通函数 ---    function1()    print(function2("a", "b"))    print(function2_1("a", "b"))    function3(1, 2, 3)    function3(*[1, 2, 3])    function3_1(a="A", b="B", c="C")    function3_1(**{"a":"A", "b":"B", "c":"C"})    function4(3)    function5(1)    # --- 匿名函数 ---    none()    print(add(1, 5))    print((lambda arg1, arg2: arg1 + arg2)(1, 2)) # 匿名函数的另一种调用方式    # --- 位置参数 和 关键字参数 的混合使用 ---    function6(1, 2, 3, 4, 5)    function6(1, *[2, 3, 4, 5])    function7(1, num=12, age=21)    function8(1, 22, 2, 3, num=12)# ===========================================================# === 调用自定义模块 ===# 导入模块并调用 (三种导入模块方式,选择其中一种)import time # 第一种, 引入单个模块import time as t # 引入并重命名import time, calendar # 第二种, 引入多个模块from mymodule import myfunction # 第三种, 导入模块指定函数(*引入所有)print(myfunction())# === 动态导入模块 ===import importlibmodulename = "os"# 方式1obj = __import__(modulename)  # 不推荐# 方式2obj = importlib.import_module(modulename)  # 推荐使用print(obj.getcwd())

以下是自定义的模块

#coding=utf-8# mymodule.py 自定义模块def myfunction():    return "myFunction"# 避免外界调用函数时运行了测试代码if __name__ == "__main__":    print(myfunction())
原创粉丝点击