详解 Python 中的函数类型

本文深入讲解Python函数的创建、使用及高级特性,包括参数传递、返回值、变量作用域、默认参数值、关键字参数和返回多个值。通过实例演示,帮助读者理解函数在Python编程中的重要作用。

函数是可重⽤的代码块,使⽤函数可以帮助我们组织代码的结构。我们创建函数的⽬的,是能在程序运⾏中多次使⽤⼀系列代码,⽽不⽤重复书写代码。

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'>







 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值