5. 函数

Python函数

	函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需要调用其函数名即可 。
特性:
	减少重复代码
	使程序变得可扩展
	使程序变得易维护
定义函数规则:
● 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
● 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
● 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
● 函数内容以冒号起始,并且缩进。
● return [表达式] 结束函数,选择性地返回一个值给调用方。不带eturn相当于返回 None。

语法:
Python定义函数使用def关键字,格式如下:
def 函数名(参数列表):
    函数体

例1:定义无参函数输出‘Hello Python’
def helloPython():
    print('Hello Python')2:定义有参函数输出
import math
# 计算圆面积函数
def area(radius):
    return math.pi*radius**2

print(area(10))
参数:
● 必需参数:
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

def myFunc(str):
    print(str)
    return

# 调用函数myFunc()
myFunc()

TypeError: myFunc() missing 1 required positional argument: 'str'

● 关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致。

def area(width,height):
    return width*height

# 调用函数myFunc()
print(area(height=100,width=6))

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

def area(width,height=666):
    return width*height

# 调用函数myFunc()
print(area(width=6))

● 不定长参数
函数能处理比当初声明时更多的参数。这些参数叫做不定长参数
def fun(a, b, *args):
    print(a)
    print(b)
    print(args)

fun(1,2,3,4,5,6,7)

def fun(a, b, *args,**kwargs):
    print(a)
    print(b)
    print(args)
    print(kwargs)

fun(1,2,3,4,5,6,7,weight=12,height=15)

def fun(a, b, *args, **kwargs):
    print(a)
    print(b)
    print(args)
    print(kwargs)

tup = (11,22,33)
dic = {"name":"python", "year":1991}
fun(1, 2, *tup, **dic)

return语句
return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回Nonedef sum(arg1, arg2):
    # 返回2个参数的和."
    total = arg1 + arg2
    print("函数内 : ", total)
    return total

# 调用sum函数
total = sum(10, 20)
print("函数外 : ", total)

匿名函数
定义:python 使用 lambda 来创建匿名函数。匿名是没有名字的函数,不用写return,返回值就是该表达式的结果。
lambda x:x*x
等同于
def func(x):
    return x*x

例子:
def myFunc(x,y):
    if x>y:
        return x/y
    else:
        return y/x

myLambda = lambda x,y:x/y if x>y else y/x

print(myFunc(2,4))
print(myLambda(4,2))

变量作用域
定义
● L (Local) 局部作用域
● E (Enclosing) 闭包函数外的函数中
● G (Global) 全局作用域
● B (Built-in) 内置作用域(内置函数所在模块的范围)
规则:
以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,
再者去内置中找。
g_count = 0  # 全局作用域
def outer():
    o_count = 1  # 闭包函数外的函数中
    def inner():
        i_count = 2  # 局部作用域

猜你喜欢

转载自blog.csdn.net/qq_21153997/article/details/94773925