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

python--函数详解(一)

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

python--函数详解(一)

目录

一、认识函数

什么是模块化编程?

什么是函数?

函数的作用?

函数的定义与使用?

函数的特征与注意要点:

二、关于函数的参数 

带有参数的函数,定义例子?

三、函数中的参数类型

四、函数的返回值 

五、函数的变量作用域

六、nonlocal 关键字 


​​​​​​​

一、认识函数

什么是模块化编程?

模块化编程指把程序进行封装(函数封装,面向对象,文件等等)

什么是函数?

函数是一个具有特定功能的代码块

函数的作用?

函数就是把代码进行封装,以提高代码的重用性,提高开发效率,降低后期的维护成本

函数的定义与使用?
#定义函数【基本结构】
def 函数名([参数列表]):
    当前函数的具体功能的代码
    当前函数的具体功能的代码
    。。。。。。。。。。。。
#函数的封装完并不会进行执行,只是对函数进行定义了
#如果想要使用定义的函数,那么只需要用语法来进行函数的调用
#具体功能的代码编写一定要缩进

#函数的调用
函数名()    

#例子
def love():   #定义函数love
    print('I')   #具体功能
    print('love')  #具体功能
    print('you')  #具体功能
love()   #函数的调用

函数的特征与注意要点:

 1、函数定义后,不调用不执行

2、Python 不能再函数定义前进行调用

3、函数的调用不受次数的影响

4、函数的命名要遵守命名规范:   

         字母数字下划线,不能用数字开头

          严格区分大小写,不能使用关键字

           命名最好有意义,且不要使用中文

         函数的命名不能重复

二、关于函数的参数 

函数在定义时,可以在参数的位置进行定义(形参)

如果函数有形参,那么在调用的时候必须传递参数(实参)

实参将传递给行参的过程,本质上就是变量的赋值操作

带有参数的函数,定义例子?
#在定义函数时,在小括号内可以定义形参(形式上的参数)
def love(who):
    print(f'我爱你{who}')

love('小白')

运行结果:
我爱你小白

如果没有传入‘小白’
运行结果:
TypeError: love() missing 1 required positional argument: 'who'

也就是有形参的函数时,要在调用的时候传入相对应的实际参数值

三、函数中的参数类型

普通参数、默认参数、收集参数、命名关键字参数、关键字参数收集

1、普通参数

普通参数,也就是位置参数,也叫顺序参数,也是必须传递的参数

#普通参数例子:

def love(x,y):
    print(x,y)
love(1,2)

2、默认参数

在定义形参时候,指定一个默认的值

#指定默认值的参数例子:

def love(x,y=100):
    print(x,y)
love(1)

#运行结果
#1 100

#如果在调用的时候,往参数里面增加参数,那么会覆盖掉默认值,例如:

def love(x,y=100):
    print(x,y)
love(1,99)

#运行结果
# 1 99

注意要点:指定默认参数必须放到普通参数的后

3、收集参数

定义:收集参数为专门用来收集多余的参数,或者理解为不确定需要传递多少个实参,直接用一个形参来接收

在定义函数的时候,如果需要收集参数,那么这个形参前面需要加一个‘*’号  例如*args 也可以换成是*name 等

# 收集参数的例子
def func(a,b,c,d,*args):
    print(a,b,c,*args)
func(1,2,3,4,4,4,3,5,6)

4、命名关键字参数

关键字参数定义在收集参数后面

关键字参数必须通过形参的名字来进行传递

#name 必须指定参数值
def func(a,b,c,*args,name):
    print(a,b,c,args,name)

func(1,2,3,4,4,4,3,5,name=6)
#运行结果:
#1 2 3 (4, 4, 4, 3, 5) 6

5、关键字参数收集

定义:  关键字参数通过**kwargs进行定义,传参的是字典。

def func(a,b,c,*args,**kwargs):
    print(a,b,c,args,kwargs)

func(1,2,3,4,4,4,3,5,name='aaaa',age = '18',sex = 'ccc')

#运行结果:
#def func(a,b,c,*args,**kwargs):
    print(a,b,c,args,kwargs)

func(1,2,3,4,4,4,3,5,name='aaaa',age = '18',sex = 'ccc')

四、函数的返回值 

return 调用带有返回值的函数时,函数中的返回值会返回到函数调用处

函数中使用return进行返回时候,return 后的数据将不在运行,意味着函数到这里结束。

#没有返回值的函数,或者可以理解为,没有指定返回内容

#m例子:
def love(a,b):
    print(f'{a} 我喜欢你{b}')
love('林佳赟','啊')

#返回结果:(没有指定返回值)
#林佳赟 我喜欢你啊


#指定返回值的例子

def love(a,b):
    res = (f'{a} 我喜欢你{b}')
    #可以在函数体内使用return 返回任意内容
    return res
print(love('林佳赟','啊'))
#返回结果
#林佳赟 我喜欢你啊

五、函数的变量作用域

作用域:当前起作用的,可以用的范围区域

变量的作用域分为两种,全局变量及局部变量

 全局变量:

函数内部使用global 定义的变量,就是全局变量

在函数外部,使用golbal定义的变量,也是全局变量

OLD_URL = 'http://oldboyedu.com'


def bb():
    global OLD_URL

    OLD_URL = OLD_URL + '#m'


if __name__ == '__main__':
    bb()

    print(OLD_URL)

#运行结果
#http://oldboyedu.com

 局部变量:

函数内定义的变量,局部变量,在函数外部不能用

在函数外定义的不可变数据类型,函数可以访问,但不能更改

在函数外定义的可变数据类型,函数可以访问并更改(字典、列表)

#函数内定义的变量,局部变量,在函数外部不能用

def flist():
    vlist = 'baby'
print(vlist)


#返回结果
#  print(vlist)  NameError: name 'vlist' is not defined



#在函数外定义的不可变数据类型,函数可以访问,但不能更改
num = 10
def func():
    print(num)
func()
#返回结果
#  10


#在函数外定义的可变数据类型,函数可以访问并更改(字典、列表)
vlist = [1,2,3,4,5]
def fuc_list():
    vlist[2] = 'baby'
    print(vlist)

fuc_list()

#运行结果
#  [1, 2, 'baby', 4, 5]

六、nonlocal 关键字 

在内函数中如果想要使用外层函数的变量,那么需要使用nonlocal关键字进行引用

#变量和函数都有作用域
#在内函数中如何使用上一层函数中的局部变量?

def outer():
    num = 10
    def inner():
        print(num)
    inner()
outer()

#运行结果
#  10

def outer():
    num = 10
    def inner():
        num += 1
        print(num)
    inner()
outer()
#运行结果
#UnboundLocalError: local variable 'num' referenced before assignment



def outer():
    num = 10
    def inner():
        nonlocal num
        num += 1
        print(num)
    inner()
outer()
#运行结果
# 11

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

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

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