python初级:基础知识-函数

python初级:基础知识-函数

一、函数的概念

为了解决重复的业务流程,减少代码冗余,避免大量代码复制,实现代码复用,并且可以在不同位置的复用,**函数描述的就是生活中的一个行为。**代码中的函数就是包含了一行或者多行代码,通过函数名称提到包含的代码的复用性。

1.函数的声明和调用

def 函数名称(多个参数):
    """函数的注释"""
    函数内部包含的一行或者多行代码
    return 返回结果

# 调用函数
函数名称(参数数据)

基本语法解析:
def:声明函数的关键字,英文define的缩写,表示声明、定义的意思
函数名称:就是一个变量名称,函数也是一个容器
变量:是一个临时存储数据的容器
函数:是一个临时存储多行代码的容器
函数名称的命名规范:遵循变量的命名规范
参数:函数中的代码执行需要的数据,可选(可有可无)
参数就是变量,遵循变量的命名规范
函数的注释:文档注释,出现在函数中的第一行位置,描述函数的作用和使用注意事项
函数内部代码:正常的基础语法编写的代码
函数的返回结果:代码运行的结果,表示行为执行的结果,可选
函数的调用:声明函数不会执行函数内部的代码
通过该函数名称,调用执行函数内部的代码

2.函数的几种声明方式

1.正常声明

def love()
  """这是一个表达爱的函数"""
  print(5201314)
#调用函数,执行内部代码
love()

2.其他声明方式

(1)需要返回结果

行为执行过程中,不需要提供任何资源,但是行为执行完成后需要得到结果数据

def get_gift():
	"""取快递"""
	print("网购了一个心心念念的东西")
	print("今天终于送到了")
	return"<鲜衣怒马少年时>"
#执行函数,接收函数返回的数据
# res = "<鲜衣怒马少年时>”
res = get_ gift()
print (f"取回来的快递: {
     res}")

(2)需要参数,但不需要返回

执行的时候需要提供数据给函数中的代码运行,但是不需要执行结果


def get_gift(name,phone):
	"""取快递"""
	print("收件人姓名",name)
	print("收件人电话",phone)
	return"<信息无误,可以取走>"
	
name="tianxiu"
phone="11122233232"	
get_ gift(name,phone)

(3)需要参数,也需要返回

执行完成后需要结果,同时需要结果的行为

def get_gift(name,phone):
	"""取快递"""
	print("收件人姓名",name)
	print("收件人电话",phone)
	return"<信息无误,可以取走>"
	
name="tianxiu"
phone="11122233232"		
res=get_ gift(name,phone)
print("快递已经取到")

二、 函数的组件

1. 函数的参数

(1)形参与实参

def get_gift(name,phone):
	"""取快递"""
	print("收件人姓名",name)
	print("收件人电话",phone)
	return"<信息无误,可以取走>"
	
name="tianxiu"
phone="11122233232"		
res=get_ gift(name,phone)
print("快递已经取到")

参数:函数执行的时候,内部代码执行需要的数据,代码中的namephone都属于参数中的形参形参也是形式参数,写在声明函数语法的后面括号中;
对应的还有实参,代码实际执行时,传递的具体数据写在调用函数语法的后面的括号中,如上图tianxiu11122233232函数在调用执行时,实际参数的数据,会传递给形式参数,执行函数内部的代码。

(2)参数操作

实际参数传递给形式参数的操作方式,就是函数的操作

①通过位置传输

实际参数,按照形式参数的前后顺序,依次赋值

def get_gift(name,phone):
	"""取快递"""
	print("收件人姓名",name)
	print("收件人电话",phone)
	return"<信息无误,可以取走>"
	
res=get_ gift("tianxiu","11122233232")
②关键字赋值

实际参数进行数据传递时,将实际参数直接赋值给形式参数变量,提高代码可读性

def get_gift(name,phone):
	"""取快递"""
	print("收件人姓名",name)
	print("收件人电话",phone)
	return"<信息无误,可以取走>"
	
res=get_ gift(name="tianxiu",phone="11122233232")
③默认值参数

形式参数声明时,可以直接给形式参数赋值(默认值),如果调用函数时不给带有默认值的形式参数传递数据,该形式参数就会使用默认值。如果传递了实际参数,就会使用传递的实际参数。(默认值参数,要写在位置参数的后面)

def get_gift(name,phone,school="lsh"):
	"""取快递"""
	print("收件人姓名",name)
	print("收件人电话",phone)
	print("收件人学校",school)
	return"<信息无误,可以取走>"
	
res=get_ gift(name="tianxiu",phone="11122233232")
④可变参数

可变参数,当函数不确定要接收参数的个数时,可以使用可变参数进行操作
可变参数将一个普通参数前面添加一个符号”*”,将普通参数修改为可变参数

def get_gift(name,phone,*x):
	"""取快递"""
	print("收件人姓名",name)
	print("收件人电话",phone)
	print("收件人其他信息",x)
	return"<信息无误,可以取走>"
	
res=get_ gift("tianxiu","11122233232","lsh")
res1=get_ gift("tianxiu","11122233232","male")
⑤可变关键字参数

可变参数在函数调用时,传递的实际参数需要约定他们的使用用途,对于代码的可读性并不是很友好,python提供了可变关键字参数提高代码可读性

def get_gift(name,phone,**x):
	"""取快递"""
	print("收件人姓名",name)
	print("收件人电话",phone)
	print("收件人其他信息",x)
	return"<信息无误,可以取走>"
	
res=get_ gift("tianxiu","11122233232","lsh")
res1=get_ gift("xilei","8666666666",gender="male")#x:gender="male"

⑥强制关键字参数

函数调用执行的过程中,必须按照形式参数的名称,按照key=value的形式传递数据

def get_gift(name,phone,x,add,pro):
	"""取快递"""
	print("收件人姓名",name)
	print("收件人电话",phone)
	print("收件人地址",add)
	print("收件人专业",pro)
	print("收件人其他信息",x)
	return"<信息无误,可以取走>"
	
res=get_ gift("tianxiu",add="longyuangongyu","11122233232","lsh",pro="经济")
⑦万能参数

函数调用过程中,不明确需要多少个位置参数,需要多少个关键字参数
通过python的参数语法,指定接收所有参数

def get_gift(*name,**school):
	"""取快递"""
	print("收件人姓名",name)
	print("收件人信息",school)

	
res=get_ gift("tianxiu","lsh",)

2.总结:

函数参数:形式参数(变量声明)和实际参数(包含了具体数据)
实际操作过程中,根据数据从实际参数传递到形式参数的方式的不同
位置参数:使用较为频繁[开发效率高]
关键字参数:使用较为频繁[可读性高]
默认值参数:使用较为频繁[通用性好]
可变参数:使用较少
可变关键字参数:使用较少
强制关键字参数:使用较少
万能参数:通用函数中使用特别频繁

3. 函数的返回值

返回值:函数中的代码执行完成,返回的结果数据
函数内部使用return关键字返回。
函数内部只要执行了return语句,这个函数就执行完毕了。

(1)返回单个数据

函数内部通过return关键字,直接返回单个结果数据
需要在调用函数的时候,使用一个变量进行接收

def get_gift(name,phone,school="lsh"):
	"""取快递"""
	print("收件人姓名",name)
	print("收件人电话",phone)
	print("收件人学校",school)
	return"<信息无误,可以取走>"
	
res=get_ gift(name="tianxiu",phone="11122233232")
print(res)

(2)返回一组数据

函数内部通过return关键字,返回多个数据(包含在组合数据类型返回)
核心还是返回了一个数据(包含了多个数据)

def get_gift(name,phone,school="lsh"):
	"""取快递"""
	print("收件人姓名",name)
	print("收件人电话",phone)
	print("收件人学校",school)
	information=[name,phone,school]
	return information
	
res=get_ gift(name="tianxiu",phone="11122233232")
print(res)

(3)返回多个数据

在工程项目开发过程中,返回单个数据是传统的语法模式,使用最为频繁。
由于Python语法的特殊性,函数中直接返回多个数据,使用较为频繁。
直接将多个数据包含在组合数据类型中再次进行返回的方式,使用较少。

def get_gift(name,phone,school="lsh"):
	"""取快递"""
	print("收件人姓名",name)
	print("收件人电话",phone)
	print("收件人学校",school)

	return name,phone,school
	
res1,res2,res3=get_ gift(name="tianxiu",phone="11122233232")
print(res1)
print(res2)
print(res3)

4. 函数的调用

(1) 函数的声明和调用(使用场景)

(2) 函数的互相调用
一个函数中,可以直接调用另一个函数

(3) 函数的递归调用
一个函数中,可以通过自己的名称调用自己

5. 变量(局部变量|全局变量)

出现了函数,变量的声明出现了差异,函数内部和外部声明的变量完全不同。

(1)全局变量

位置:声明在函数外部
作用:当前文件中所有的函数都能访

(2)局部变量

位置:声明函数内部
作用:当前函数可以访问,当前函数外部都无法访问该变量
# 声明全局变量
name = "tianxiu"  # 不可变类型
school = ["lsh", "szdx"]


def my_func1():
    """测试函数1"""
    # 声明局部变量
    msg = "我是student()"
    # 访问数据
    print(f"全局变量(不可变):{
     name}")
    print(f"全局变量(可变):{
     school}")
    print(f"当前函数局部变量:{
     msg}")


def my_func2():
    """测试函数2"""
    # 声明局部变量
    msg2 = "我是student2()"
    # 访问数据
    print(f"全局变量(不可变):{
     name}")
    print(f"全局变量(可变):{
     school}")
    print(f"当前函数局部变量:{
     msg2}")
    # print(f"其他函数局部变量:{msg}")

my_func1()
print("---------------------------")
my_func2()
运行结果:
全局变量(不可变):tianxiu
全局变量(可变)['lsh', 'szdx']
当前函数局部变量:我是student()
---------------------------
全局变量(不可变):tianxiu
全局变量(可变)['lsh', 'szdx']
当前函数局部变量:我是student2()

从结果上看全局变量和局部变量都可以读取,但是全局变量可以在程序任意地方使用,而局部变量只在当前函数体内有用,
函数内部,不能直接修改全局变量,但是可以修改全局变量内部的数据

global为引入全局变量,函数内部引入全局变量,可以修改全局变量,也可以修改内部

# 声明全局变量
name = "tianxiu"  # 不可变类型
school = ["lsh", "szdx"]


def my_func1():
    """测试函数1"""
    # 声明局部变量
    msg = "我是student()"
    global school
    school.append("qhdx")
    # 访问数据
    print(f"全局变量(不可变):{
     name}")
    print(f"全局变量(可变):{
     school}")
    print(f"当前函数局部变量:{
     msg}")

代码结果:

全局变量(不可变):tianxiu
全局变量(可变)['lsh', 'szdx', 'qhdx']
当前函数局部变量:我是student()
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/114565.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pycharm如何设置快捷键「建议收藏」

    pycharm如何设置快捷键「建议收藏」pycharm中默认ctrl+d是复制一行,这和jupyter完全不一样,我比较喜欢的是:ctrl+d:删除一行ctrl+c:复制一行所以想要将pycharm进行修改。我们以ctrl+d:删除一行为例。找到如下:点击那一行。然后弹出如下对话框:我们不需要删除,直接按快捷键ctrl+d,自动更换为ctrl+d。此时会说和其他快捷键冲突了,没事,删除其他快捷键即可,那些都是一些不常用的。然后,我们可以删除以前的那个快捷键。完成…

  • clion 2021 激活码[在线序列号]

    clion 2021 激活码[在线序列号],https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • ubuntu/LinuxMint安装RabbitVCS

    ubuntu/LinuxMint安装RabbitVCS在windows下习惯了用tortoisesvn进行软件开发和管理,转到Linux下面,发现有一款和tortoisesvn极其相似的软件rabbitvcs,使用起来相当的顺手。安装过程有点折腾,可能和我用的linux发行版有关系吧。首先添加源,然后安装相应的软件包:$sudoadd-apt-repositoryppa:rabbitvcs/ppa$sudoapt-get

  • 如何制作离线tts?「建议收藏」

    如何制作离线tts?「建议收藏」tts->把文字转化为语音。先把中文转化为拼音。这个主要依靠1个字典,能把汉字和读音对应。下面提供字典:丂yu丄shang丅xia丆shi丏mian丗shi丟diu丠qiu両liang丣you並bing丩jiu丮ji丯jie丱kuang丳chan丵zhuo丷ba丼jing乀fu乁yi乂yi乆jiu乊hu乑yin乕hu乗sheng乚yin乛zhe乢gai乣jiu乨shi乪nang乴xue乵yan乸na乹qian乿luan

  • MAC双系统如何切换_mac双系统怎么进入mac系统

    MAC双系统如何切换_mac双系统怎么进入mac系统Mac上面安装双系统是一个很常见的系统选择方案。双系统之间的切换对于使用Mac的用户都不会陌生,但是对于许多初次接触Mac系统的用户而言,也有很多并不知道如何切换双系统,以及如何设置默认进入的系统。虽然只是一个很小的技巧,但是对于新接触Mac系统的用户如果不了解这个的话,那么使用中会有一定的麻烦。双系统的切换以及设置系统默认启动也有几种方法。-w+I4g$u#H#T1K一、开机按Op…

  • 扫清盲点,如何正确的从HttpClient 3.x系统升级到HttpClient 4.x

    扫清盲点,如何正确的从HttpClient 3.x系统升级到HttpClient 4.x如果周期比较长的项目,或者这个项目开发人员换过了好几拨人,很有可能出现一些奇怪的问题,比如一个项目中出现了多种Spring注入bean的方式,不同版本的jar冲突等等爬虫项目有的时候更是过犹不及,拿模拟登陆来说,开发人员的迭代,每个人的风格和技术各不相同,模拟登陆的方式也是五花八门,早在之前看到过一个项目的源码,其中使用HttpClient也是各种风格,虽然官方已经强烈建议使用HttpClie…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号