欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python 对象(type/object/class) 作用域 一等函数 (慕课--Python高级,IO并发 第二章)

程序员文章站 2022-07-02 14:58:07
在python中一共有两种作用域:全局作用域和函数作用域全局作用域:在全局都有效,全局作用域在程序执行时创建,在程序执行结束时销毁;所有函数以外的区域都是全局作用域;在全局作用域中定义的变量,都属于全局变量,全局变量可以在程序的任意位置被访问; 函数作用域:函数作用域在函数调用时创建,在调用结束时销 ......

在python中一共有两种作用域:全局作用域和函数作用域
全局作用域:在全局都有效,全局作用域在程序执行时创建,在程序执行结束时销毁;所有函数以外的区域都是全局作用域;在全局作用域中定义的变量,都属于全局变量,全局变量可以在程序的任意位置被访问;

函数作用域:函数作用域在函数调用时创建,在调用结束时销毁,函数每调用一次就会产生一个新的函数作用域;在函数作用域中定义的变量,都是局部变量,只能在函数内部被访问;在函数中为变量赋值时,默认都是为局部变量赋值;如果需要在函数内部修改全局变量,则需要使用global关键字来 声明 使用全局变量。

变量的查找规则:当我们使用一个变量时,会优先在当前作用域中寻找该变量,如果有则使用;如果没有则继续去上一级作用域中寻找,如果有则使用;如果依然没有则继续去上一级作用寻找,依次类推,直到找到全局作用域,依然没有找到的话,则会抛出异常;

函数式编程:函数先定义,再使用
一等对象一般都会具有如下特点:(函数)对象是在运行时创建的;(函数)能赋值给变量或者作为数据结构中的元素;(函数)能作为参数传递;(函数)能作为返回值返回;

高阶函数:高阶函数至少要符合以下两个特点中的一个:接收一个或多个函数作为参数;将函数作为返回值(闭包,通过闭包可以创建一些只有当前函数(嵌套的内部函数)能访问的变量,可以将一些私有的数据藏到闭包中。形成闭包的条件:1.函数嵌套;2.将内部函数作为返回值返回;3.内部函数必须要使用到外部函数的变量;);

匿名函数:lambda函数表达式(只是函数的简写,语法糖),专门用来创建一些简单的函数,他是函数创建的一种方式;语法:lambda 参数列表:返回值

在定义函数时,可以通过"@"装饰器,来使用指定的装饰器,来装饰当前的函数,可以同时为一个函数指定多个装饰器,这样函数将会按照从内向外的顺序被装饰。

尚学堂的python视频教程 https://pan.baidu.com/s/1dgcbkx7 密码:ofml

python对象==========================
对象是内存中专门用来存储数据的一块区域,对象可以用来存放各种数据(数字,布尔值,代码),对象由三部分组成:对象的标识id,对象的类型type,对象的值value,当用一个变量去保存变量的时候,保存的是对象的id(内存地址),一个对象一旦创建它的id和type就永远不能改变了,而对象的值value,可变对象的值可以改变,不可变对象的值不可以改变。

面向对象oop:python语言中的所有操作都是通过对象来进行的。面向对象的编程语言,关注的是对象,而不关注过程;对于面向对象的语言来说,一切都是对象;面向对象的编程思想,将所有的功能统一保存到对应的对象中。

慕课网--python高级编程和异步io并发编程 https://www.bilibili.com/video/av26982371/?p=5

第二章:
在python一切皆对象,(在静态语言java中,有两个概念:object和class,object只是class的生成的一个实例而已),在python中class也是对象,函数也是对象,python中的代码和模块也是对象,python可以动态的修改类的属性;(在python中,函数和类都是对象,属于一等公民,这里的一等公民可以进行以下操作:1、可以赋值给一个变量,2、可以添加到集合对象中,3、可以作为参数传递给函数,4、可以当做函数的返回值;)(list是一个集合;)

type、object和class的关系:
type可以用来返回(一个变量指向的)对象的类型,(也可通过type生成一个类,元类编程)。type->class->object:type可以生成class,class可以生成object;(type是用来生成class对象的,我们平时使用的实例,就是自己定义的类或者是内置的类来生成的一些实例。)object是所有对象都要继承的最顶层的基础类;(类名.__bases__:查看类的基类),如果一个类没有继承任何类的话,默认是继承自object类的。type本身也是一个类,同时type也是一个对象,type.__bases__是object;type(object)是type,表明object是由type生成一个对象,type和object形成一个环路,object.__bases__是空,最顶层基类object的基类是空;

Python 对象(type/object/class) 作用域  一等函数  (慕课--Python高级,IO并发  第二章)

在python中一个对象有三个特征:1、身份:对象在内存中的地址,通过id()函数查看一个对象的身份,任意生成一个对象都会有一个id, 2、类型:任何一个对象都是有类型的, 3、值:比如:a=1 ,1就是a变量的值,1会被python解释器用int类型来封装,封装后用a这个变量指向1这个对象。

python中的常用内置类型:
none:python解释器在启动的时候,会用none类型来生成none的对象,a=none b=none:a和b都指向python解释器中唯一的none对象,id(a)=id(b)返回true;所以none对象在全局只有一个。
数值类型:int,float,complex(复数),bool;
迭代类型:可以用for循环来进行遍历;
序列类型:list,tuple,str,array,range,bytes/bytearray/memoryview(二进制序列)
映射类型:dict字典,映射类型有key和map,
集合类型:set和frozenset;set和dict在python里的实现原理是一致的,所以它们在python里的性能都非常高。
上下文管理类型:with语句;
其他:模块类型,class和实例,函数类型,方法类型(class里面定义的函数),代码类型(代码本身也会被python解释器变成一个对象类型),object类型,type类型,ellipsis类型(省略号的类型),notimplemented类型(做面向对象的高级设计时会用到);

java,c#这类编译型语言在运行前编译的时候,就可以做一些类型的检测,但python一切皆对象的概念,使得python没有编译过程,那么很多代码的错误只有在代码运行起来的时候,才会知道我们的错误,这就是动态语言带来的一些弊端。 (第二章 完结)