python视频学习42-53

Python函数用于打包代码,实现重用,减少冗余。创建函数用`def`,调用只需函数名加括号。参数包括位置参数、关键字参数、默认参数和收集参数。返回值通过`return`语句。作用域分局部和全局,嵌套函数能访问外部变量但不能修改,除非使用`nonlocal`。全局变量在函数内修改需`global`,但不推荐。LEGB规则指导变量查找顺序。
摘要由CSDN通过智能技术生成

函数上

1.python函数的主要作用

打包代码

  • 可以最大程度实现代码重用,减少冗余代码
  • 将不同功能的代码进行封装、分解,从而减低结构的复杂度,提高代码的可读性
2.创建和调用函数

创建:用def语句定义函数,函数名字叫myfunc,后面加上一个小括号,冒号下面就是函数体,函数体是一个代码块,也就是每次调用函数时将被执行的内容;

调用:调用函数只需要写上函数名字,再加上一个小括号

:pass是一个空语句 ,经常是用来做一个占位符使用的。当我们在规划一个程序要实现什么功能时,就会使用到pass,因为我们会先将各个功能定义成函数,pass用来占位,等到大局规划好后,再来填补函数细节。如果需要让myfunc函数做点什么,只需要替换掉pass就行

 

 3.函数的参数
  • 参数可以分为形式参数和实际参数两种:形式参数是函数定义时写的参数名字;实参是在调用函数时传递进去的值,通常情况下,实参是按照形参定义的顺序进行传递的
  • 通过参数实现对函数的个性化定制
  • 参数的数量可以有多个

 

(1)位置参数 

(2)关键字参数

注:位置参数和关键字参数混合使用的时候,位置参数必须在关键字参数之前

(3)默认参数:python允许函数的参数在定义时指定默认值,如果没有传入实参,将采用默认参数值来代替。如果使用默认参数,必须把它放在最后边,否则会报错

(4)收集参数 :类似print()函数,支持可多可少的参数,拥有这种特性的形参我们称之为收集参数。定义收集参数,只需要在形参的名字前,加上 * 表示就行。

 

注意

  • 如果在收集参数后面还需要指定其它参数,那么在调用函数的时候就应该使用关键字参数来指定后面的参数,否则,python就会把实参纳入到收集参数中;
  • 收集参数除了可以将多个参数打包为元组,还可以通过两个连续的 * 将参数打包为字典

 

(5)解包参数 :一个*和两个* 的使用在形参上使用是打包,在实参上使用是解包

 4.函数的返回值

 return语句可以让函数实现返回。只要执行了return语句,函数就会立刻返回,而不会理会后面是否还有其他语句

小知识:如果一个函数没有通过return语句显示的来返回内容,它也会自己在执行完函数体中所有语句后悄悄返回一个none值

5.作用域

作用域指一个变量可以被访问的范围,通常一个变量的作用域总是由它在代码中被赋值的位置来决定的

  • 局部作用域:如果一个变量定义的位置在函数里面,它的作用域仅限于该函数中,称为局部变量
  • 全局作用域:如果是在任何函数的外部去定义一个变量,它的作用域是全局的,称为全局变量。全局变量可以在函数内部被访问,却无法在函数中修改它的值,因为一旦试图对其进行赋值操作,python就会立刻创建一个同名的局部变量进行覆盖

注:局部变量会覆盖同名的全局变量

global语句 :可以在函数内修改全局变量的值,但是在函数中肆意通过gobal语句去声明它是一个全局变量,并且修改全局变量的值的做法非常不提倡,因为这样做很容易出现意想不到且难以排查和维护的bug

6.嵌套函数

内部函数可以访问到外部函数的变量,但却无法修改它,如果非要在内部函数去修改外部函数的变量,可用nonlocal语句

 LEGB规则:L是local,是局部作用域;E是Enclosed,是嵌套函数的外层函数作用域;G是Gobal,是全局作用域;B是Build-in,也叫内置作用域。(L E G B地位由高到低)

当局部作用域和全局作用域发生冲突时,python会使用局部作用域的变量,除非使用gobal语句进行特别声明;当函数嵌套发生时,局部作用域又会覆盖外层函数的作用域,除非使用nonlocal语句进行声明;不要起一些与内置函数相同的变量名,因为起一个同名的它就被覆盖了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值