函数是可重⽤的代码块,使⽤函数可以帮助我们组织代码的结构。我们创建函数的⽬的,是能在程序运⾏中多次使⽤⼀系列代码,⽽不⽤重复书写代码。
9.1 创建函数
Python 使⽤ def 关键词创建函数,语法如下:
def function_name(arg1, arg2, arg3, .... argN):
#statement inside function
缩进
空⽩区在 Python 中⼗分重要。实际上,空⽩区在各⾏的开头⾮常重要。这被称作缩进(Indentation)。在逻辑
⾏的开头留下空⽩区(使⽤空格或制表符)⽤以确定各逻辑⾏的缩进级别,⽽后者又可⽤于确定语句的分组。这意味着放置在⼀起的语句必须拥有相同的缩进。每⼀组这样的语句被称为块(block)。有⼀件事你需要记住:错误的缩进可能会导致错误。所有在函数内部的声明,都必须使⽤相等的缩进。函数可以没有参数,也可以有多个参数。多个参数之间⽤逗号隔开。还可以使⽤ pass 关键字忽略掉函数主题的声明。
我们看⼀个函数的例⼦,下⾯的函数将计算指定范围的整数之和:
def sum(start, end):
result = 0
for i in range(start, end + 1):
result += i
print(result)
sum(1, 10)
在上⾯的代码中,我们定义了⼀个叫作 sum() 的函数,该函数有两个参数(start和 end),该函数将从 start 开始,累加到 end,最后打印出累积之和。代码运⾏的结果为 55。
9.2 函数返回值
上⽂定义的函数只是简单地在控制台打印出结果,如果我们想要将计算结果赋值给变量,以便做更深⼊的处理时应该怎么办?当我们遇到这种情况时,可使⽤ return语句,将返回函数计算结果并且退出函数。例如:
def sumReturn(start, end):
result = 0
for i in range(start, end + 1):
result += i
return result
a = sumReturn(1, 5)
print(a)
在上⾯这段代码中,我们定义了有返回值的函数 sumReturn(),并将其结果赋值给变量 a。上⾯代码的运⾏结果为 15。
当然, return 语句也可以不返回值,⽽是⽤来退出函数(实际上会返回 None,为NoneType 对象)。每⼀个函数都在其末尾隐含了⼀句 return None,除⾮你写了你⾃⼰的 return 语句。
在 Python 中,如果你不指定 return 的返回值,则会返回 None 值。
9.3 全局变量和局域变量
全局变量指的是不属于任何函数,但又可以在函数内外访问的变量。⽽局域变量指的是在函数内部声明的变量,局域变量只能在函数内部使⽤,⽆法在函数外访问(函数执⾏完后,会销毁内部定义的局部变量)。
下⾯我们通过例⼦来演⽰这两者的区别:
global_var = 12 # 定 义 全 局 变 量
def func():
local_var = 100 # 定 义 局 部 变 量
print(global_var) # 可 以 在 函 数 内 部 访 问 全 局 变 量
func() # 调 用 函 数 func()
print(local_var) # 无 法 访 问 变 量 local_var
上述代码将会出现错误:
NameError: name 'local_var' is not defined
我们再看⼀个例⼦:
xy = 100 # 定 义 全 局 变 量xy
def func():
xy = 200 # 定 义 局 部 变 量xy
print(xy) # 此 时 访 问 的 是 局 部 变 量xy
func() # 调 用 函 数 func()
该代码显⽰的结果是 200,不是 100。
使⽤ global 关键字,可以将局部变量同全局变量绑定在⼀起。例如:
t = 1
def increment():
global t # 现 在 的 变 量t在 函 数 内 外 都 是 一 致 的
t = t + 1
print(t) # 输 出 2
increment()
print(t) # 输 出 2
使⽤ global 关键字声明全局变量时,⽆法直接赋值,⽐如“global t = 1”的写法存在语法错误。
9.4 参数的默认值
为参数指定默认值,只需在定义函数时使⽤赋值语句即可。例如:
def func(i, j = 100):
print(i, j)
上述定义的函数 func() 有两个参数 i 和 j。 j 的默认值为 100,这意味着我们在调⽤这个函数的时候可以忽略掉 j 的值,⽐如 func(2),运⾏结果为 2 100。
9.5 关键字参数
为函数传递参数值的⽅法有两种:位置参数和关键字参数。我们之前调⽤函数的时候都使⽤的是位置参数。下⾯我们看如何使⽤关键字参数:
def named_args(name, greeting):
print(greeting + " " + name)
named_args(name='jim', greeting='Hello')
named_args(greeting='Hello', name='jim')
named_args('jim', greeting='hello')
上述代码运⾏结果都是“hello jim”。
关键字参数使⽤“name=value”的名称、值对传递数据,正如上⾯代码演⽰的那样,使⽤关键字参数的时候,参数的顺序是可以调换的,⽽且位置参数和关键字参数可以混合使⽤(只能先使⽤位置参数,后使⽤关键字参数)。
9.6 返回多个值
我们可以通过在 return 语句中使⽤逗号,将多个值返回,这种返回值的类型是元组。例如:
def bigger(a, b):
if a > b:
return a, b
else:
return b, a
s = bigger(12, 100)
print(s)
print(type(s))
运⾏结果为:
(100, 12)
<class 'tuple'>
本文深入讲解Python函数的创建、使用及高级特性,包括参数传递、返回值、变量作用域、默认参数值、关键字参数和返回多个值。通过实例演示,帮助读者理解函数在Python编程中的重要作用。

101

被折叠的 条评论
为什么被折叠?



