Python3 (入门3) 函数

Python3 (入门3) 函数


本文由 Luzhuo 编写,转发请保留该信息.
原文: http://blog.csdn.net/Rozol/article/details/69242050


以下代码以Python3.6.1为例
Less is more!

#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 = 321
def 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, 456

localvariable()
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 = 123
def localvariable_err():
    global global_err
    global_err = 321
    print("global_err: {}".format(global_err)) # => 321

localvariable_err()
print("global_err: {}".format(global_err)) # => 321






if __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())


# 重新导入
from imp import reload
reload(mymodule) # 修改完模块后, 在不退出程序的情况下, 重新加载该模块 (注: 之前采用 import mymodule 导入模块的)


# === 动态导入模块 ===
import importlib
modulename = "os"

# 方式1
obj = __import__(modulename)  # 不推荐
# 方式2
obj = importlib.import_module(modulename)  # 推荐使用

print(obj.getcwd())

以下是自定义的模块

#coding=utf-8
# mymodule.py 自定义模块

def myfunction():
    return "myFunction"


# 避免外界调用函数时运行了测试代码
if __name__ == "__main__":
    print(myfunction())
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值