Python中函数的使用

函数

函数就是带名字的代码块,用于完成具体的工作。要执行函数定义的特定任务,可调用该函数。需要在程序中多次执行同一项任务时,你无需反复编写完成该任务的代码,而只需调用执行该任务的函数,让 Python 运行其中的代码。你将发现,通过使用函数,程序的编写、阅读、测试和修复都将更容易
函数的使用包含两个步骤:
1.定义函数–封装独立的功能
2.调用函数–享受封装的成果

使用函数

定义函数

def 函数名():
        函数封装的代码

1.def是英文define的缩写
2.函数名称应该能够表达函数封装代码的功能,方便后续的调用
3.函数名称的命名应该符合标识符的命名规则
可由字母,下划线和数字组成
不能以数字开头
不能与关键字重名
举例:打印问候语的简单函数

# 定义函数
def greet_user():
	print("hello!")
# 调用函数
greet_user()

在这里插入图片描述

向函数传递信息

只需稍作修改,就可以让函数 greet_user() 不仅向用户显示 Hello! ,还将用户的名字用作抬头。为此,可在函数定义 def greet_user() 的括号内添加 username 。通过在这里添加 username ,就可让函数接受你给 username 指定的任何值。现在,这个函数要求你调用它时给 username 指定一个值。调用 greet_user() 时,可将一个名字传递给它,如下所示:

def greet_user(username):
""" 显示简单的问候语 """
print("Hello " + username.title() + "!")
greet_user('dong')

代码 greet_user(‘jesse’) 调用函数 greet_user() ,并向它提供执行 print 语句所需的信息。这个函数接受你传递给它的名字,并向这个人发出问候
在这里插入图片描述
同样, greet_user(‘sarah’) 调用函数 greet_user() 并向它传递 ‘sarah’ ,打印 Hello, Sarah! 。你可以根据需要调用函数 greet_user() 任意次,调用时无论传
入什么样的名字,都会生成相应的输出。

实参与形参

参数的作用
函数,把具有独立功能的代码块组织成为一个小模块,在需要的时候调用
函数的参数,增加函数的通用性,针对相同的数据处理逻辑,能够适应更多的数据
1.在函数内部,把参数当作变量使用,进行需要的数据处理
2.函数调用时,按照函数定义的参数顺序,把希望在函数内部处理的数据,通过参数传递

前面定义函数 greet_user() 时,要求给变量 username 指定一个值。调用这个函数并提供这种信息(人名)时,它将打印相应的问候语。在函数 greet_user() 的定义中,变量 username 是一个形参 —— 函数完成其工作所需的一项信息。在代码 greet_user(‘dong’) 中,值 ‘dong’ 是一个实参 。实参是调用函数时传递给函数的信息。我们调用函数时,将要让函数使用的信息放在括号内。在代码greet_user(‘dong’) 中,将实参 ‘dong’ 传递给了函数 greet_user() ,这个
值被存储在形参 username 中。

传递实参

鉴于函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递实参的方式很多,可使用位置实参 ,这要求实参的顺序与形参的顺序相同;也可使用关键字实参 ,其中每个实参都由变量名和值组成;还可使用列表和字典。

位置实参

你调用函数时, Python 必须将函数调用中的每个实参都关联到函数定义中的一个形参。为此,最简单的关联方式是基于实参的顺序。这种关联方式被称为位置实参 。
显示宠物信息的函数。这个函数指出一个宠物属于哪种动物以及它叫什么名字,如下所示:

def describe_pet(animal_type,pet_name):
    """显示宠物的信息"""
    print("\nI have a " + animal_type + ".")
    print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet('hamster','harry')

在这里插入图片描述
这个函数的定义表明,它需要一种动物类型和一个名字。调用 describe_pet() 时,需要按顺序提供一种动物类型和一个名字。例如,在前面的函数调用中,实参 ‘hamster’ 存储在形参 animal_type 中,而实参 ‘harry’ 存储在形参 pet_name 中。在函数体内,使用了这两个形参来显示宠物的信息。
位置实参的顺序很重要
使用位置实参来调用函数时,如果实参的顺序不正确,结果可能出乎意料:

def describe_pet(animal_type, pet_name):
""" 显示宠物的信息 """
	print("\nI have a " + animal_type + ".")
	print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet('harry', 'hamster')

在这里插入图片描述
在这个函数调用中,我们先指定名字,再指定动物类型。由于实参 ‘harry’ 在前,这个值将存储到形参 animal_type 中;同理, ‘hamster’ 将存储到形参 pet_name 中。结果是我们得到了一个名为 Hamster 的 harry,如果结果像上面一样搞笑,请确认函数调用中实参的顺序与函数定义中形参的顺序一致。

关键字实参

关键字实参 是传递给函数的名称 — 值对。你直接在实参中将名称和值关联起来了,因此向函数传递实参时不会混淆(不会得到名为 Hamster 的 harry 这样的结果)。关键字实参让你无需考虑函数调用中的实参顺序,还清楚地指出了函数调用中各个值的用途。
下面来重新编写上面的程序,在其中使用关键字实参来调用 describe_pet() :

def describe_pet(animal_type,pet_name):
    """显示宠物的信息"""
    print("\nI have a " + animal_type + ".")
    print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet(pet_name = 'harry',animal_type = 'hamster')

在这里插入图片描述
函数 describe_pet() 还是原来那样,但调用这个函数时,我们向 Python 明确地指出了各个实参对应的形参。看到这个函数调用时, Python 知道应该将实参 'hamster’和 ‘harry’ 分别存储在形参 animal_type 和 pet_name 中。输出正确无误,它指出我们有一只名为 Harry 的仓鼠。

函数的返回值

在程序开发中,有时候,会希望一个函数执行结束后(举例子:温度计函数,要返回给我>们当前的温度),告诉调用者一个结果,以便调用者针对具体的结果作出后续的处理在函数中使用return关键字可以返回结果,调用函数一方,可以使用变量来接收函数的返回结果

def sum_2_num(num1, num2):
    result = num1 + num2
    return result
    num = 100          #return之后的语句不再执行
    print num
sum_result = sum_2_num(1,20)
print sum_result

在这里插入图片描述

局部变量与全局变量

局部变量是在函数内部定义的变量,只能在函数内部使用
全局变量是在函数外部定义的变量,(没有定义在某一个函数内),所有函数内部都可以使用这个变量

局部变量

局部变量是在函数内部定义的变量,只能在函数内部使用
函数执行结束后,函数内部的局部变量,会被系统回收
不同的函数,可以定义相同的名字的局部变量,但是各用各的不会产生影响
作用:
在函数内部使用,临时保存函数内部需要使用的数据

def demo1():
    # 定义一个局部变量num
        num = 10
        print num
def demo2():
   # 定义一个和demo1函数中同名的局部变量num,两者不会相互影响
        num = 20
        print num
demo1()
demo2()

在这里插入图片描述

全局变量
# 定义一个全局变量num
 num = 10 
def demo1():
        num = 20
        print 'demo1_num=====>%d' % num
def demo2():
        print 'demo2_num=====>%d' % num
 demo1()
 demo2()

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值