新浦京81707con > 注册购买 > Python中关于函数的介绍,Python函数初识

原标题:Python中关于函数的介绍,Python函数初识

浏览次数:177 时间:2019-05-08

形参和实参

形参: 情势参数,不是实在存在的,是虚构变量。

实参: 实际参数,调用函数时传给函数的参数,能够是常量,变量,表明式,函数,传给形参。

举例:

def add(x, y):             # 这里 add(x, y) 里面中的 x, y 就是形参
    print(x   y)

add(1, 2)                  # 调用 add(1, 2) 函数里面的 1, 2 就是实参 

运行结果:
3

三.默许参数:当函数里的某多个参数在超过一半的动静下是一个牢固的值时,能够接纳暗中认可参数,事先把那几个参数的值写好,当调用函数时,假诺未有参数字传送入,就应用暗许参数的值,假使有参数传入,就利用传入的值

3.四.2、使用大四数量的注重字实参

有时候,必要承受大4数量的实参,但先行不晓得传递给函数的会是什么样的新闻。在那种境况下,可将函数编写成能够承受任意数量的 键—值 对 —— 调用言语提供了有一些就接受多少。

举个栗子:

def build_profile(first, last, **user_info):    profile = {}    profile['first_name'] = first    profile['last_name'] = last    for key, value in user_info.items():        profile[key] = value    return profileuser_profile = build_profile('albert','eniston',                             location = 'China',                             field = 'physics',                             age = 18)print(user_profile)

上述代码的实施结果为:

C:Python37python3.exe D:/pythoncode/Exercise/Exer8/Exer8-5.py{'first_name': 'albert', 'last_name': 'eniston', 'location': 'China', 'field': 'physics', 'age': 18}Process finished with exit code 0

分析:形参 * *user_info 中的七个星号让 Python 创造3个名叫user_info 的空字典,并将吸收接纳的保盛名称 — 值对都打包到那个字典中。上面包车型地铁build_profile函数不亮堂用户会输入多少音讯,指明姓名后,再提供住址、年龄等音信,函数都会将这么些音信都存款和储蓄在空字典中。

注意:上述跋扈数量关键字实参传值时也有二种方法:1是使用键值传值,2是一直调用**{字典}的方式

print(build_profile(**{'first':123,'last':'name'}))  # 也接受**{字典} 的传值方式# 运行结果{'first_name': 123, 'last_name': 'name'}

函数参数分类

一.必备参数:
必备参数必须按精确的逐条传入,数量与发明时壹致。

def person(name, age):
    print('My name is %s, age %d' %(name, age))

person('klvchen', 28)

运行结果:
My name is klvchen, age 28

二.首要字参数
函数使用首要字参数进行调用时,允许参数的各样与注脚时不平等。

def person(name, age):
    print('My name is %s, age %d' %(name, age))

person(age = 28, name = 'klvchen')

运行结果:
My name is klvchen, age 28

叁.默许参数
调用函数时,用户1旦未有传来缺省的值,则被感觉是私下认可值。默许参数只好放在最终。

def person(name, age, sex = 'male'):
    print('My name is %s, age %d sex is %s' %(name, age, sex))

person(age = 28, name = 'klvchen')

运行结果:
My name is klvchen, age 28 sex is male

当用户需求传入非默许参数时:

def person(name, age, sex = 'male'):
    print('My name is %s, age %d sex is %s' %(name, age, sex))

person('lily', 18, 'female')

运行结果:
My name is lily, age 18 sex is female

四.不定长参数
优先未曾明确用户输入的参数数量。
(*args)只存放未命名的变量参数,用户输入的参数会构成元组方式传入。

def add(*args):
    print(args)
    total = 0
    for i in args:
        total  = i
    print(total)

add(1, 2, 3)

运行结果:
(1, 2, 3)
6

(**kwargs)只存放命名的变量参数,用户输入的参数会构成字典格局传入。

def person(**kwargs):
    print(kwargs)
    for i in kwargs:
        print("%s : %s" %(i, kwargs[i]))

person(name='klvchen', job='IT')

运行结果:
{'name': 'klvchen', 'job': 'IT'}
name : klvchen
job : IT

(*args)和(**kwargs)协作协同利用即尚可用户输入的百分之百参数:

def person( *args, **kwargs):
    print(args)
    print(kwargs)
    print()
    for l in args:
        print(l)
    for i in kwargs:
        print("%s : %s" %(i, kwargs[i]))

person(1, 2, 3, 4, name='klvchen', job='IT')

运行结果:
(1, 2, 3, 4)
{'name': 'klvchen', 'job': 'IT'}

1
2
3
4
name : klvchen
job : IT

2、函数的格式

地点这3行代码正是1个粗略的函数实例,def是少不了的,用于定义函数,greet_user是概念的函数名,()

括号内建议函数为做到其职务急需哪些的新闻,也正是参数,可是此地它不必要任何消息就能够产生其行事,由此括号是空的(即使如此,括号也少不了)。最终,定义以冒号结尾。

中等的缩实行整合了函数体。这里是函数的基本点,全部的操作都以概念在此处的。下面的评释处的文本是被称之为文档字符串 ( docstring )的笺注,描述了函数是做如何的。文书档案字符串用3引号括起, Python 使用它们来扭转有关程序中等学校函授数的文书档案。

greet_user() 那是对上面定义好的函数的调用。Python中要调用函数,可依次钦命函数名以及用括号括起的必备消息-参数,上边包车型大巴函数因为从没概念参数所以就不要求打开参数的传递,直接加括号调用。

函数的命名规则:

一.函数名必须以下划线或字母开头,能够包含任性字母,数字或下划线的组合,不可能使用别的的标点。
2.函数名分别轻重缓急写。
三.函数名不能够是保留字。

def hello():
    print
    return  
    print
a=hello()
print
结果:
hello
None

三、参数的传递

函数的重临值

函数再次回到单个值

def test():
    return 'hello world'

result = test()
print(result)

运行结果:
hello world

函数重回三个值

def test():
    return 1, [2, 3]

result = test()
print(result)
运行结果:
(1, [2, 3])

注意:
壹.假诺函数未有 return 关键字,默许会再次来到 None
二.一旦函数 return 多个值,Python 会把七个值组成3个元组重回
三.函数在试行进度中一经遇上 return 关键字就能告一段落到实处行并回到结果,return 代表着函数的停止

一.每三个函数都有重回值,再次来到值跟在return语句前面,值重临给调用的函数,借使return语句前边未有值,可能是函数里从未return,暗中同意再次来到的是None

2.2、函数的命名规则

函数名必须以下划线或字母开头,可以包含任意字母、数字或下划线的组合。不能使用任何的标点符号;函数名是区分大小写的。函数名不能是保留字。

函数的成效

壹.缩消肉复代码
二.便宜修改,更易扩大
三.保持代码1致性

def e:
    print
    print
e(1,2,3,name='tom')
结果:
三.四.2.壹、当地方参数遇上**kwargs时:
def build_profile(name, **user_info): #name 是一个位置形参  **user_info是用来生成一个空字典接受其他变量    print    print(user_info)# 首先是赋值一个位置实参,然后将后面键值对指定的实参存储到字典里build_profile('keitter',age=12,location = 'China')          # 使用特殊传值方式 **{}  传入的是字典  最后传出的也是字典build_profile('njson',**{'first':'jack','location':'China'})# 当只传入一个位置实参时  则后面的**user_info 还是会生成一个空字典build_profile('nkitter')       # 当传入的位置参数个数和形参中定义好的位置参数数量不符时就直接报错build_profile('nkitter','name',age=12,location = 'China')    ===》直接报错

C:Python37python3.exe D:/pythoncode/Exercise/Exer8/Exer8-5.pykeitter{'age': 12, 'location': 'China'}json{'first': 'jack', 'location': 'China'}kitter{}Process finished with exit code 0

1.始发那么些def必须有

四、返回值

函数并非总是直接呈现输出,相反,它能够管理局地数码,并回到3个或壹组值。函数重返的值被称之为 重临值 。在函数中,可利用 return 语句将值重返到调用函数的代码行。重回值令你能够将先后的大部千斤职业移到函数中去达成,从而简化主程序。

再次来到值的归类:

当返回值数 = 0         ==》返回none当返回值数 = 1         ==》返回object,是什么就返回什么当返回值数 > 1         ==》 返回元组元组中包含所有的返回值 

举个栗子:

def get_formatted(first_name,last_name):    full_name = first_name   ' '   last_name    return full_name.title()musician = get_formatted('qi','siwill')print

上述代码的实施结果为:

C:Python37python3.exe D:/pythoncode/Exercise/Exer8/Exer8-3.pyQi SiwillProcess finished with exit code 0

分析:调用重回值的函数时,需求提供二个变量,用于存款和储蓄再次回到的值。在那边,将再次回到值存款和储蓄在了变量 musician 中

函数可再次来到任何类型的值,包涵列表和字典等较复杂的数据结构

举个重返字典的例证:

def build_people(first_name,last_name):    person = {'first':first_name,'last':last_name}    return personmusician = build_people('jack','rose')print

上述代码的实施结果为:

C:Python37python3.exe D:/pythoncode/Exercise/Exer8/Exer8-3.py{'first': 'jack', 'last': 'rose'}Process finished with exit code 0

分析:上述代码正是指重返值个数为1,那么是什么就赶回什么,person是二个字典所以就回到叁个字典,若是是别的对象也都回去对应的。

再举个栗子:

def build_people(first_name,last_name):    # person = {'first':first_name,'last':last_name}    return first_name,last_namemusician = build_people('jack','rose')musician2 = build_people('jack','["Rose","jack"]')printprint(musician2)

C:Python37python3.exe D:/pythoncode/Exercise/Exer8/Exer8-3.py('jack', 'rose')('jack', '["Rose","jack"]')Process finished with exit code 0

分析:上述代码正是指重回值个数大于一,那么则赶回二个元组,包涵全体值的元组。

叁.return语句一旦实行,就表示函数实施实现,函数体内return前面包车型大巴从头到尾的经过不再施行

3.贰、地点实参

鉴于函数定义中或者含有多少个形参,因而函数调用中也可能包涵多个实参。向函数字传送递实参的不二法门很多,可采纳地点实参 ,那须要实参的种种与形参的逐条同样;也可使用首要字实参 ,当中每一个实参都由变量名和值组成;还可应用列表和字典。

调用函数时, Python 必须将函数调用中的每一种实参都涉及到函数定义中的三个形参。为此,最简单易行的涉嫌方式是基于实参的依次。那种涉及格局被叫做地方实参。

文字描述太多不及举个栗子:看2个显得宠物音信的函数。那一个函数提出多个宠物属于哪一类动物以及它叫什么名字

def describe_pet(pet_name,animal_type):    print("nI have a "   animal_type)    print("My "   animal_type   "'s name is "   pet_name.titledescribe_pet('Hellen','dog')describe_pet('dog','Hellen')  # 错误的位置参数传递

上述代码的周转结果为:

C:Python37python3.exe D:/pythoncode/Exercise/Exer8/Exer8-2.pyI have a dogMy dog's name is Hellen# 参数位置传递错误  结果也不一样I have a HellenMy Hellen's name is DogProcess finished with exit code 0

分析:上述代码上五次实参的传递因为任务不相同而赢得区别的结果,第三个明显不是我们想要的结果,所以在进展实参传递时认同函数调用中实参的顺序与函数定义中形参的相继一致。

函数名 #调用你定义的那些函数

二、函数的定义

hello
('over', '345')

叁.四.2.二、当地方参数、私下认可参数遭逢 **kwargs 时:

注意:暗中同意参数一定不能够松手 **kwargs 前面,不然程序会平昔报错。

举个栗子:

def build_profile(name, age=18,**user_info):  #name 是一个位置形参  age是默认形参  **user_info是用来生成一个空字典接受其他变量    print    print    print(user_info)# 这很好理解,就是位置实参传值,将默认参数age赋值为12,然后剩下的参数生成字典build_profile('keitter',12,location = 'China')  # 这和上面那个差不多,只不过是使用了关键字实参给默认参数赋值build_profile('nHellon',location = 'China',age=23)# 使用特殊传值方式 **{}  age值和上面两个一样,可以是位置实参,也可以关键字指定build_profile('njson',**{'first':'jack','location':'China'})# 当只传入一个位置实参时 则会生成默认参数值和后面的**user_info 生成的一个空字典build_profile('nkitter')

C:Python37python3.exe D:/pythoncode/Exercise/Exer8/Exer8-5.pykeitter12{'location': 'China'}Hellon23{'location': 'China'}json18{'first': 'jack', 'location': 'China'}kitter18{}Process finished with exit code 0

一、什么是函数

3.四.一、结合使用位置实参和率性数量实参

假使要让函数接受不一样类别的实参,必须在函数定义中校选用放肆数量实参的形参放在最终。 Python 先相配岗位实参和关键字实参,再将剩下的实参都搜聚到结尾三个形参中。

def make_pizza(size,*topings):    print(size,topings)make_pizza(2,'pepperoni')make_pizza(16,23,45,'mushrooms','green peppers','extra cheese')

上述代码的进行理并了结果为:

C:Python37python3.exe D:/pythoncode/Exercise/Exer8/Exer8-5.py2 ('pepperoni',)16 (23,45,'mushrooms', 'green peppers', 'extra cheese')Process finished with exit code 0

分析:基于上述函数定义, Python 将接受的首先个值存款和储蓄在形参 size 中,并将其余的全部值都存款和储蓄在元组 toppings 中。

**注意:*topings只接到地方参数,不可能接受关键字参数**

当地点参数境遇topings时:正是有职分参数同时也有N个实参传入,首先将值赋给岗位参数,然后剩下的剩下的值赋给args以元组的样式出口

四.可变参数:当我们要传播的多少有许多的时候,能够利用可变参数,传入未命名参数可以选择*args,全体数据保存在元组里;传入命名的参数能够用**kwargs,全部数据保存在字典里。

3.三、暗中认可参数

编辑函数时,可给各种形参钦命 暗许值 。在调用函数中给形参提供了实参时, Python 将应用钦定的实参值;不然,将利用形参的默许值。因而,给形参钦命默许值后,可在函数调用中简易相应的实参。使用暗许值可简化函数调用,还可清楚地建议函数的卓绝用法。

举个栗子:

def describe_pet(pet_name,animal_type='dog'):    print("nI have a "   animal_type)    print("My "   animal_type   "'s name is "   pet_name.titledescribe_pet('jack')  # 默认animal_type='dog'describe_pet('pick','cat') # 使用位置实参,赋值animal_type='cat'describe_pet(animal_type="cat",pet_name='Hellen')  # 关键字传参

上述代码的实施结果为:

C:Python37python3.exe D:/pythoncode/Exercise/Exer8/Exer8-2.pyI have a dogMy dog's name is JackI have a catMy cat's name is PickI have a catMy cat's name is HellenProcess finished with exit code 0

分析:此地修改了函数 describe_pet() 的概念,在内部给形参 animal_type 内定了暗中同意值 'dog' 。那样,调用那个函数时,假如未有给 animal_type 钦赐值, Python 将把那个形参设置为 'dog' ,若是钦命animal_type的值则就选择钦命的值。

五、函数的return

3.三、关键字实参

重中之重字参数是向形参传递--值对,关键字实参传递让大家无需思量函数调用中的实参顺序,还精通地提议了函数调用中相继值的用处。

举个栗子:

def describe_pet(pet_name,animal_type):    print("nI have a "   animal_type)    print("My "   animal_type   "'s name is "   pet_name.title#  关键字传参不必考虑位置describe_pet(pet_name='Hellen',animal_type="dog") describe_pet(animal_type="dog",pet_name='Hellen')

上述代码的运维结果为:

C:Python37python3.exe D:/pythoncode/Exercise/Exer8/Exer8-2.pyI have a dogMy dog's name is HellenI have a dogMy dog's name is HellenProcess finished with exit code 0

分析:地点的那些例子是非同一般字实参传递,使用首要字参数允许函数调用时参数的次第与表明时不雷同,因为 Python 解释器能够用参数名匹配参数值。

图片 1

瞩目:如若首要字参数和岗位参数一齐出现时,关键字参数是不可能写在职分参数前边的

def q(a, b, c=0, *args, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
q
q(1, 2, c=3)
q(1, 2, 3, 'a', 'b')
q(1, 2, 3, 'a', 'b', tom=‘abc’)
结果:

2.1、格式

def 函数名:    函数体

函数定义的简单规则:    函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。    任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。    函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。    函数内容以冒号起始,并且缩进。    return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

举个栗子,轻巧认知一下函数:

def greet_user():        """显示最简单的问候语"""    print("Hello,"greet_user()

在开立定义函数时,函数名括号里的参数称为情势参数,指标是在函数调用的时候接受实际参数。当调用函数时,函数名括号内部的参数叫实际参数,指标是传给格局参数具体内容。他们的分别是,形参是杜撰的。并不占用内部存储器;实参是1个变量,占用内部存款和储蓄器空间,数据传送单向,由实参传给形参。

一、函数是怎么着

​ Computer语言中的函数是类比于数学中的函数演变来的,然则又有所不相同。前边的文化中大家学会了使用基础语法和流程序调整制语句貌似也能处理局地千头万绪的主题材料,不过相对于一般的大方重复性的操作我们就不能够用事先的逻辑格局来减轻了,那时候就须要七个可以包涵那几个重复性操作的统一代码来说述其特点来贯彻,所以函数是团组织好的,可重复使用的,用来落到实处单一,或相关联效能的代码段。

定义:函数是值将一组语句群集通过一个名字封装起来,要想进行这些函数,只需调用其函数名就可以。

优点:在消除难题时,使用函数有大多功利,最要害的补益正是:压实代码的重用性和可读性,早先时期增添方便

本文由新浦京81707con发布于注册购买,转载请注明出处:Python中关于函数的介绍,Python函数初识

关键词: 新浦京81707con Python 函数

上一篇:windows安装过程记录

下一篇:没有了