进阶学Python:Python的函数基础 | 八月更文挑战

这是我参加8月更文应战的第15天,活动概略检查:8月更文应战

前语

学无止境

任何时分都需求主动学习、有技术眼光和魄力,既能吹得了造火箭的牛、也能落地
优先级 劣后级实践的产品、技术帮公司结束价值,也能让自己有必定的收入。才是你应该永久
寻求的方针,和打破瓶颈的价值。

今天博主跟咱们聊一聊怎样运用 Python 函数根底python123!不python能够自学吗喜勿喷,如有建议欢迎补偿、评数组指针论!

关于设备和汉化能够观看博主的这篇文章《VsCode下载设备及汉化 》以及Python系列:windows10配备Python3.0开发环境产品艺术规划!,设备结束重启VsCode!

  • 什么是函数
  • 函数的特性
  • 函数的界说
  • 函数的调用
  • 函数的参数
  • 关于大局变量和部分变量的运用

Come on!什么是函数:

函数是最基本的一种代码抽象办法,为了结束某种特定的功用而安排的带名字的代码块。那为什么要运用函数呢?

  1. 避免代码的重复性,即函数的能够重复运用的。

  2. 坚持代优先级队列码的一起性优先级和劣后级的差异,易于修改。即当函数被界说好,即可在许多当地为了数组结束相同或许相似的功用时可调用函数,而当这些功用发生改变时,咱们只需修改该函数即可,不用费事的去python怎样读修改每一处结束该功用的代码。

  3. 扩展性。

其实简略的来说:函数便是一个有着特定功python能够自学吗用效果的东西,例如锤子或许扳手等,每逢咱们需求运用这些东西的时分,咱们不需求暂时请师傅制作这样一件东西,这样将会十分繁琐且消耗许多的时刻,故咱们仅需花费必定的价值去借用这些东西即可python编程这些价值咱们暂时能够把其称之为参数,而造这些东西的人为了怕他人不知道这些东西的嵌套规划运用,一般会给这些东西贴上运用阐明(优先级回转函数嵌套是什么意思阐明),而制作这些东西也会运用许多材料结构即(函数体),当然一件东西会有命名即(python怎样读函数名),而当咱们运用东西完嵌套序列毕后会获得一些效果,咱们也能够将这些效果称为(回来值)。当然有东西天然会有东西箱即(类)。


‍Come on!函数的特性:

界说一个函数要运用 def 句子,顺次写出 函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数阐明,函数体,函数的回来值用 return 句子回来。

def  函数名(参数1,参数2,参数3,....优先级..):
"""
函数阐明
"""
函数体
return嵌套序列   回来值

例如

#界说一个获取平方值的函数
def calc(x):
"""
:param x: 输入数字
:return: 获取该数字的回来值
"""
res =x**2
return res  #获取回来值嵌套
res = cal优先级调度算法c(10)
print(res)

留意:函python能够自学吗数体内部的句子在实施时,一旦实施到 retu产品艺术规划rn 时,函数就实施结束,即函数内 return 后边代码将无效,并将效果回来。如果没有 return 句子的函数,许多时分将优先级 劣后级其称为进程,但其实默许回来 None

函数的界说一般相似于变量的界说,定嵌套循环义一个函数只给了函数一个称谓,指定了函数里包括的参数,和代码块结构。与变量相似,函数的界说也相当于将代码块以一种特定的办法存储在内存中,只需当调用的时分才会实施,而当咱们打印函数名时,其实打印的是内存地址;当打印函数名加括号时,则是回来值。例:

def greater(name)产品司理:
print("hello world,%s !"%name)
return name
gre数组和链表的差异ater("amandapython下载安装教程")  #调用函数,实施python123渠道登录函数
print(greater) #打印函数地址
print(greater("Sunny Chen")) #调用函数,而且获取回来值
#输出为:
#hello world,Sunny Chen !
#<function greater at 0x00000241C37A3E18>
#hello world,Sunny Chen !
#amanda

当调用函数时,需传入指定类型的参数,才会实施函数体中的代码块。(与java相似有根底的学这个东西很简略)


Come on!函数的界说:

3.1 形参和实参

形参即办法产品规划专业参数python123,函数结束其作业python编程时所需的一项信息。形参不占用内存空间,只需产品艺术规划在被调用时才会占用内存空间,调用完了即被释放。

实参即实践优先级排名是什么意思参数,调用函数时传给函数的信息。例如:

#形参和实参
def greate嵌套查询r(name):  #name即为形参
print("hello world,%s !"%name)
return name
greater("Sunny Chen") #Sunny Chen即为实产品

上述而言:在调用函数并传入参数即 greater("Sunny Che数组指针n"),将实参 "Sunny Chen" 传递给函数 greater(),这个值就被存储在形参 name 中。

3.2 方位参数和关键字参数

  • 方位参数–> 在调用函数时,Python 有必要将每嵌套函数个实参都相关到函数界说的一个形参中,最简略的相关办法便是根据实参的次第,这种python怎样读办法即为方位实参。
#方位参数,一一对嵌套序列应,不可多也不可少
def introductpython123渠道登录ion(name,age,hobby):
intro ="My name数组去重 is %s,I'm %d years old,my hobby i产品规划专业s %s."%(na优先级回转me,age,h优先级调度算法obby)
print(优先级回转intro)
introduction("Sunny Chen",21,数组去重"eating")
  • 关键字参数 –> 传递给函数的是键值对。由于在实参中的将称谓和值相关起来,所以在传入时无需考虑次第。
#关键字参数,无需一一对应,但也不数组指针可多不可少
def introduction(n优先级排序ame,age,hobby):
intro ="My name is %数组函数的使用办法s,I'm %d years old,my hobby is %s."%(name,age,hobby)
print(intro)
introduction(age=21,name="Sun优先级回转ny Chen",hobby="dancing")

但方位参数和关键字参数混合运用时:

  1. 方位参数有必要写在关键字参数的左面
  2. 同一个参数不能两次或许屡次传值,只能传一次
#方位参数和关键优先级 劣后级字参数混合运用
def introduction(name,age,hobby):
intro ="My name is %s,I'm %d years old,my hobby is %s."%(name,age,hobby)
print(intro)
introduction("Sunny Chen",age="21",hobby="eating")
#方位参数有必嵌套要写在关键字参数优先级是什么意思左面
#introduction(name="Sunny C产品规划专业hen",21,hobby="eating")
#同一个参数传值只能一次
#introd数组公式uction("Sunny Chen",21,age="eating")

注:在没python能够自学吗有参数组的情况下,传入的值有必要与形参的数量一起python编程

3.3 默许参数

界说函数时咱们能够给参数传递默许值,当调用函数时没有传递该参数值时运用默许参数值。带默许值的参数称为默许参数,而数组函数的使用办法无默许值的参数为必需参数,调用函数时必需参数必填,默许参数选优先级英文填。例如:

'产品规划专业''
@name: Sunny Chen
@test: test font
@m优先级最高的运算符sg: 这是由S数组排序unpython下载安装教程ny Chen创立.
@param:
@return:
'''
#默许参数
def introduction(name,age,hobby="runing"):
intro优先级排序 ="My name is %s,I'm %d years old,my hobby is %s."%(name,age,hobby)
print(intro)
#当不给默许参数传值时,默许运用默许参数值
introduction("Sunny Chen",21)python下载安装教程
#而给默许参数传值时,优先级最高的运算符则掩盖
introduction("Sunny Chen",age=21,hobby="eating")

3.4 参数组

*args –>传入的剩余的方位参数,被 args 接纳。即当要想传入多于python编程形参的实参,而且以方嵌套函数位参数的办法传入,多于的参数其以元组的办法接纳。

'''
@name: Sunny Chen
@test: test font
@msg: 这是由Sunny Chen创立.
@param:
@retu优先级是什么意思rn:
'''
def calc(x,y,*arpython编程gs):
res =x+y
# print(x,y)
print(x,y,args)#*args-->多于的参数,方位参数传入,以元组的办法接纳
return res
calc(1,2,7,8,6)
calc(2,3,{"name":"sunny"}) #即使传入字典,字典当成全体也会以元组的办法被接纳
calc(3,4,["sunny","Chen"],"h产品运营ello world")
calc(3,4,*["sunny","Chen"]) #相当于该列表遍历,逐python123渠道登录一添加至列表而且转为元组
calc(3,4,*"sunny")数组去重
# 输出为
#1 2 (7, 8, 6)
#2 3 ({'name': 'sunny'},)
#3 4 (['sunny', 'Chen'], 'hello world')
#3 4 ('sunny', 'Chen'Python)
#3 4 ('s', 'u', 'n产品质量法', 'n', 'y')

**kwar嵌套gs –>传入的剩余的关键字参数,被优先级是什么意思 kwargs 接纳。即要想传入多于形参的实参,而且以关键字参数组词数的办法传入,多于的参数其以字典的办法接纳

'''
@name: Sunny Chen
@test: test font
@ms数组函数的使用办法g: 这是由Sun嵌套循环ny Chen创立.
@param:
@return:
'''
def calc(x,y,**kwargs):
res =x+y
#print(x,y)
print(x,y,kwargs)#**kwargs-->多于的参数,方位参数传入,以字典的办法接纳
return rePythons嵌套函数
calc(x=1,产品运营y=3,name="sunny")
calc(1,2,**{"name":"Chen"})
#输出为:
#1 3 {'name': 'sunny'}
#1 2 {'name': 'Chen'}

当在函数值界说参数时,一同界说 *args**kwargs 时,能够传优先级是什么意思入任何参数。剩数组去重下的方位参数,传入函数,以元组的办法被存储在 *args 中;而剩余的关键字参数,传入函数,以字典的办法被存储在 **kwargs

'''
@name: Sunny Chen
@test: test font
@msg: 这是由Sunny嵌套结构 Chen创立.
@param:
@returPythonn:
'''
def calc(x,y,*a优先级调度算法rgs,**kwargs):
res =x+y
print(x,y,args,kwargs)#*args,**kwargs-->能够传入任何参数
return res
calc(1,23,"222",["Sunny Chen","Mr-Chen"],greater="hello world")
#输出为:
#1 23 ('222', ['Sunny Chen', 'Mr-Chen']) {'greater': 'hello world'}

Come on!函数python123渠道登录的调用:

这儿嵌套结构咱们需求简略的了解以下关于变量的效果域有哪几种?

  • L:local,部分效果域,即函数中界说的变量。

  • E: enclosing,嵌套父级数组和链表的差异函数的部分效果域,即包括此函数的上级的部分效果域,但不是全数组函数的使用办法局的;

  • G: global,大局变量,便是模块等级界说的变量。

  • B: built-in,系统固定模块里面的变量,比如 int,bytearra数组指针y 等。

    查找变量的优先级次第顺次为:
    部分效果域 >外层效果域 >当时模块中的大局效果域 > python内置效果域,也便是 LEGB

经过以下代码或许咱们能够更好的了解这四种效果域之间的联优先级系:

'''
@name: Sunny Chen
@test: test font
@m数组公式sg: 这是由Sunny Chen创立.
@param:
@return:
'''
x =int(1)  #python内置效果域---->B
y =2  #当时模块中的大局变量--->G
def outfunc():
outpa产品运营ra = 3 #外层效果域 --->E
def infunc():
inpa数组ra =优先级4  #部分效果域 --->L
print(inpara)
infunc()
outfunc()

一同咱们需求知道的是,函数中变量的效果域只与函数的声明有关,而与函数的调用方位无关。经过下面这个产品司理比如咱们能够知晓:

'''
@name: Sunny Chen
@test: tepython根底教程st font
@msg: 这是由Sunny Chen创立.
@param:
@retur优先级英文n嵌套函数:
'''
#函数名-->函数内存地址;函数名python是什么意思()-->实施函数,而且获取回来值
name ="zhangsan"
def foo():
name ="lisi"
def bar():
name = "wangwu"
def mitt():
print(name)
return mit优先级和劣后级的差异t
return bar
foo()()()
#相当于---------------
# bar =foo() #实施foo函数,而且获取bar函数内存地址,而且赋值给bar变量
# mitt =bar() #bar内存地址加括号->实施bar函数,并python根底教程且获取mitt内存地址
# mitt() #mitt内存地址+括号-->实施mitt函数
#输出效果为:wangwu 而不是zhangsan

这个效果为 wangwu 而不是 zhangsan,则阐明函数中变量的效果域只需函数的声明有关,而与函数的调用方位无关。不然,输出肯定为-> zhangsan ,由于若简略的调用 mitt() 其变量为 name=”zhangsan“,则打印的为 zhangsanPython


Come on!关于大局变量和部分变量的运用:

在函数外,一段代码最开始所赋值的变量,其能够被多个函优先级 劣后级数所调用,其效果域为大局效果域产品司理,则称为大局变量。

在函数内界说的变量名,只能在该函数内部引证,不能在函数外部引证这个变量名,其效果域为部分效果域,则称为部分变量。例如:

'''
@产品艺术规划name: Sunny Chen
@te嵌套路由st: test font
@msg: 这是由Sunny Chen创立.
@param:
@return:
'''
name ="Sunny Chen产品质量法" #大局变量
def foo():
name ="xiaojia"
print(name)
def bar():
name ="mengxia" #嵌套规划嵌套结构分变量
print(name)
bar()
print(name)
foo()
#输出作数组去重办法用:
# Sunny Chen
# xiaojia
# mengxia

global –&g嵌套查询sql句子t;若想在函数内部修改大局变量,则需求运用 global 关键

'''
@name: Sunny Chen
@test: test font
@m优先级最高的运算符sg: 这是由Sunny Chen创立.
@param:
@return:
'''
#注:global有必要写在嵌套循环大局变量产品批号是生产日期吗修改前
name ="Sunny Chen" #大局变量
def foo():
name ="xiaojia"
p嵌套rint(name)
def bar():
global name  #修改的为大局变量
nam产品规划e ="mengxia" #部分变量
print(name)
bar()
print(name) #函数没有实施前,数组排序故打印的仍是原部分变量name
foo() #实施函数
print(name) #函数实施后,修改了大局变量为name =mengxia

nonlocal –>若嵌套查询sql句子子函数内想修改父级函数的变量,则需求运用 nonlocal数组函数的使用办法 键字

'''
@name: Sunny Chen
@test: test font
@msg: 这是由Sunny Chen创立.
@param:
@return:
'''
name ="Sunny Chen" #大局变量
def foo():
name ="xiaopython123渠道登录jia"
print(产品司理name嵌套是什么意思)
def bar():
nonlocal name
name ="mengxia"数组去重 #部分变量
print(name)
bar()
print(优先级和劣后级的差异name) #由于函数产品司理没有调用前,函数没有实施,故打印的仍数组和链表的差异是Sunny Chen
foo() #函数实施
print(name) #函数数组排序实施后,由于nonlocal关键字,修改的仅是父级的变量name

注:无论是 global 仍是 nonlocal,都有必要写在变量的修改的前面。不然会报错。


到这儿:Python函数根底!共享结束了,快去试试吧!


最终

  • 更多参看精彩博文请看这儿:陈永佳的博客

  • 喜欢博主的小伙伴能够加个重视、点个赞哦,持续更新嘿嘿!

发表评论

提供最优质的资源集合

立即查看 了解详情