python--函数详解(一)

本文详细介绍了Python中的函数,包括模块化编程的概念、函数的定义与使用、参数类型(普通参数、默认参数、收集参数、命名关键字参数、关键字参数收集)、返回值的使用、变量作用域(全局与局部)以及nonlocal关键字的运用。通过实例解析,帮助读者深入理解Python函数的各个方面。
摘要由CSDN通过智能技术生成

目录

一、认识函数

什么是模块化编程?

什么是函数?

函数的作用?

函数的定义与使用?

函数的特征与注意要点:

二、关于函数的参数 

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

三、函数中的参数类型

四、函数的返回值 

五、函数的变量作用域

六、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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值