栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python基础语法(十一)--函数(上)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python基础语法(十一)--函数(上)

这里写目录标题
  • 函数描述
    • 函数定义与调用
        • 案例一:定义一个简单的函数
    • 函数参数
      • 形参与实参
      • 参数默认值
      • 关键字参数
        • 案例二:关键字参数的使用
      • 可变参数与序列解包
    • 函数返回值
        • 案例三:计算斐波那契数列
    • 变量作用域
        • 案例四:求前n项数的和

函数描述

在程序中如果对某一段代码的功能有重复性需求时,可以将这段代码用一个函数定义,这样使用到该功能时,调用函数名即可而不需要重复的编写该段代码,提高了编程的效率,使代码更加简洁

函数定义与调用

python内置了很多使用的函数可以直接调用1
然而python的内置函数往往无法满足开发过程中的实际需求,这时就需要用户自定义函数,下面是定义函数一些需要注意的内容:

  1. 函数定义以def关键字开头,后接函数标识符、圆括号(必须保留)和冒号,语法格式:def 函数名([参数]):,其中参数可选且可以为多个(形参列表)但必须位于圆括号内
  2. 函数体相对于def语句需要保持一定的空格缩进
  3. 函数体的第一行语句可以选择性的使用文档字符串2用于存放函数说明
案例一:定义一个简单的函数
def SayHello(name):
	'''本函数可以向指定的名称问号'''
	print(f'Hello {name}')

SayHello('Tom')	

执行结果:

函数参数

参数是声明和使用函数时经常要用到的、用于向函数中传递数据的常用方法

形参与实参

形式参数

定义函数时建立的参数为形式参数,简称形参
实际参数
调用函数时提供给函数的实际参数为实际参数,简称实参。函数的形参和实参依靠位置决定其次序,调用函数时,传递实参要和定义函数时形参的顺序保持一致

def hello(name): 		# 此时的name就是形参
	print(f"Hi,{name}")
hello('Tom')			# 此时传入的'Tom'就是实参
参数默认值

定义参数时可以为形参设置默认值,这样在调用函数时如果没有给函数传递实参,函数的实参就是设置的形参值,如果传递实参,则将覆盖设置的形参

注意:

  1. 定义函数时如果设置了形参而且没有设置其默认值,调用函数时就必须给函数传递实参,否则程序将报错:“hello() missing 1 required positional argument: ‘name’”

  2. 在定义带有默认值参数的函数时,带有默认值的参数必须位于形参列表的最右边,否则程序会报错:“non-default argument follows default argument”

关键字参数

当用户定义了的一个函数使用多个参数时,为确保函数调用时实参能够与形参一一对应,可以采用关键字参数来直接对应到具体的形参而不考虑顺序,这样就省去了牢记参数位置和顺序的麻烦

案例二:关键字参数的使用
def doc(cat,mouse):
	print(f'{cat} is cat,{mouse} is mouse')
doc('Jerry','Tom')		# 未使用关键字参数,当实参的顺序错误时,函数处理的数据也是错误的
doc(mouse='Jerry',cat='Tom')		# 分别为mouse和cat两大关键字赋予实参,顺序不影响函数执行
doc('Tom',mouse='Jerry')	# 未完全使用关键字参数

运行结果

可变参数与序列解包

可变序列
当函数的参数数目不确定时,通过下面方法解决参数的不确定性
1.使用*args方式接收数据,以元组的形式传参

def Animals(*args):
	print(f'常见的动物有:{args}')
Animals('cat','mouse','dog')	

运行结果

  1. 使用**args方式接收参数,以字典的形式传参
def Animals(**args):
    print(f'常见的动物有:{args}')
    for key,value in args.items():		# 分别遍历字典的键和值
        print(key,'的名字为:',value)
Animals(cat='Tom',mouse='Jerry',dog='Spike')

运行结果

序列解包

当函数定义时指定了多个形参,可以在传递实参时采用列表、元组、集合、字典以及其它可迭代对象等序列结构(元素个数必须与形参个数相同),此时要在实参前面加一个‘*’,python解释器会将传递的实参自动解包,然后传递个多个形参,例如:

函数返回值

函数可以没有返回值,若需要计算返回结果,可以使用return语句3

案例三:计算斐波那契数列
def fib(n):
	a,b=1,1
	list1=[]
	while a 

运行结果

变量作用域

变量起作用的代码范围就是该变量的作用域

局部变量和全局变量
对于局部和全局变量的定义,一般来说:
函数内部定义的变量,作用于在函数内部,随函数的调用结束而自动删除,叫做局部变量
函数外部定义的变量,作用域是全局的,叫做全局变量

案例四:求前n项数的和
sum1=0		# 全局变量
def sum_result():
	'''本函数用于求前n项数字的和'''
	global sum1
	num=int(input('请输入数字:',))		# 局部变量
	for i in range(num+1):			
		sum1+=i
	return sum1
print(sum_result())			

运行结果:

上面的例子中我们使用到了global关键字,它是用来修改一个变量的作用域的关键字,一般分为两种情况4

  1. 变量在函数外部定义,但需要在函数内部修改这个变量的值(上面的例子就是该种情况)
  2. 变量在函数内部定义,但需要使其作用于函数外

  1. 当我们使用一个内置函数时,需要知道其函数名、参数以及其它函数信息,在python自带的IDLE中,当我们输入内置函数的名称和左括号时,IDLE会自动显示该函数的一些简单介绍
    ↩︎

  2. 使用help()函数可以快速的得到一个函数的含义、参数的设定以及文档字符串等重要信息
    ↩︎

  3. return语句用来从一个函数中返回并结束函数的执行,可以返回任意类型的值 ↩︎

  4. 在上面的例子中如果没有使用global关键字声明sum1为全局变量,就可能出现下面的报错:‘UnboundLocalError: local variable ‘sum1’ referenced before assignment’ ↩︎

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/304215.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号