python学习笔记(4)-- 函数

1.def 语句将创建一个函数对象并将其值付给一个变量名。def是一个可执行的语句,一个def可以出现在任一语句可以出现的地方,甚至是嵌套在其他语句中。

2.与C这样的编译语言不同,python函数在程序运行之前并不需要全部定义。(def在运行时才评估,def中的代码在函数调用后才会评估。

3.在python中,函数仅仅是对象,可将函数赋值给不同的变量名,并通过新的变量名进行调用。

4.函数允许任意的属性附加到记录信息以供随后使用。

5.Python中的多态:一个操作的意义取决于被操作对象的类型。

6.所有在函数内部进行赋值的变量名都默认为本地变量,所有的本地变量都会在函数调用时出现,并在函数退出时消失。每次对函数的调用都创建了一个新的本地作用域。

7.检查传入函数的对象类型有什么错?检查传入函数的对象类型,实质上就是破坏函数的灵活性,把函数限制在特定的类型上。没有这类检查时,函数可能处理所有的对象类型,任何支持函数所预期的接口的对象都能用(接口指函数所执行的一组方法和表达式运算符)。

8.Python创建、改变或查找变量名都是在所谓的命名空间(一个保存变量名的地方)中进行的,作用域即指命名空间。

9.除了打包代码之外,函数还为程序增加了一个额外的命名空间层,默认情况下,一个函数的所有变量名都是与函数的命名空间相关联的。

10.在任何情况下,一个变量的作用域总是由在代码中被赋值的地方所决定。

11.Python的变量名解析机制(LEGB法则):当在函数中使用未认证的变量名时,Python依次搜索4个作用域【本地作用域(L),上一层结构中def 或 lambda 的本地作用域(E),全局作用域(G),内置作用域(B)】。

12.当在函数中给一个变量名赋值时,Python总是创建或改变本地作用域的变量名,除非它已经在该函数中被声明为全局变量。

13.内置作用域仅仅是一个名为__builtin__的内置模块,必须要import__builtin__之后才能使用内置作用域,因为变量名builtin本身并没有预先内置。

14.global语句告诉python函数打算生成一个或多个全局变量。全局变量是位于模块文件内部的顶层的变量名。global声明的变量名将被映射到整个模块的作用域内。

15.nonlocal语句与global语句的区别是,nonlocal语句应用于嵌套的def 的本地作用域内的名称,而不是嵌套的模块中的名称。如果X在函数内部声明为全局变量,它将会创建或改变变量名X为整个模块的作用域。如果X在函数内部声明为nonlocal,它将会修改最近的嵌套函数的本地作用域中的名称X。

16.当执行nonlocal语句时,nonlocal列出的名称必须在一个嵌套的def中提前定义过,否则会产生一个错误。

17.函数参数的传递是通过自动将对象赋值给本地变量名来实现的。在函数内部的参数名不会影响调用者。改变函数的可变对象参数的值也许会对调用者有影响。

18.不可不参数“通过值”进行传递,可变对象通过“指针”进行传递。

19.在函数头部,*/**意味着收集任意数量的参数,而在调用时,*/**解包任意数量的参数。*元组,**字典。



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值