在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中一个对象有三个特征: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没有编译过程,那么很多代码的错误只有在代码运行起来的时候,才会知道我们的错误,这就是动态语言带来的一些弊端。 (第二章 完结)

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

  1. day_12函数默认值,数据类型的补充,函数对象名称空间与作用域,函数的嵌套定义

    复习, 昨天讲了字符串的比较,按照从左往右比较每一个字符,通过字符对应的ASCII码进行比较 函数的参数,‘ 实参与形参 形参:在函数定义时()中出现的参数 实参,在函数调用时()中出现的参数 实参的 ...

  2. python: "TypeError: 'type' object is not subscriptable"

    目前stackoverflow找到两种情况的解决办法: 1.TypeError: 'type' object is not subscriptable when indexing in to a di ...

  3. Python编程-从入门到实践 Eric Matthes 著 袁国忠 译 - - 第二章 动手试一试

    因为第一章的动手试一试基本都是探索性的,所以直接进入第二章. # 2.2 动手试一试 # 2_1 简单消息: 将一条消息存储到变量中,再将其打印出来. message = 'python 编程从入门到 ...

  4. python全栈开发_day11_作用域,函数嵌套和闭包

    一:作用域 1)什么是作用域 作用域是规定一个变量可以作用的范围,运行和销毁的范围 2)作用域的分类 1.内置作用域built_in:随着解释器的运行而产生,解释器运行的终止而销毁. 2.全局作用域g ...

  5. python 对象(object)

  6. python c++ 混合编程中python调用c++string返回类型的函数,python中返回为数字的解决办法

    本随笔解决 Python使用ctypes 调用c++dll 字符串返回类型函数,在python中显示为数字:原文解决方案见so: https://stackoverflow.com/questions ...

  7. Google C++测试框架系列高级篇:第二章 让GTest学习打印自定义对象

    上一篇:更多关于断言的知识 原始链接:Teaching Google Test How to Print Your Values 词汇表 版本号:v_0.1 让GTest学习打印自定义对象 当一个断言 ...

  8. 流畅的python第五章一等函数学习记录

    在python中,函数是一等对象,一等对象是满足以下条件的程序实体 1在运行时创建 2能复制给变量或数据结构的元素 3能作为参数传给函数 4能作为函数的返回结果 高阶函数(接受函数作为参数或者把函数作 ...

  9. python 对象和json互相转换

    一.python对json的支持 从python2.6开始,python标准库中添加了对json的支持,操作json时,只需要import json即可. 二.python对象转换成json字符串 在 ...

随机推荐

  1. 轻松完成excel读写操作- 基于POI的框架BingExcel的使用(2)

    在进行 类转换时候,系统默认注册了一些转换器,当然你也可以自定局部或者全局的转换器.下面进行具体使用说明  java类说明 对应的java实体类,其属性必须要有__@CellConfig__注解,此注 ...

  2. count group by 组合用法

    1 需求是 求订单表1个月内 订单累计费用超过500的有多少人 根据题意 最先写出的sql是这样的 SELECT SUM(totalfee)AS n FROM sendorder WHERE `add ...

  3. 通过adb获取应用的Activity堆栈信息

    获取所用应用 adb shell dumpsys activity 获取自己的应用 adb shell dumpsys activity | grep 应用的package 获取处于栈顶的activi ...

  4. SharePoint中低权限用户通过提升权限创建用户组

    /// <summary> /// 提升权限创建用户组 /// </summary> /// <param name="groupname">用 ...

  5. 利用ASP.NET里自带的站点地图工具制作网站站点地图

    站点地图很方便能快速给我们导航我们要去访问的地址,能按层级关系分门别类,给用户一个很好的用户体验,很好的看到自己当前所在的网站位置 站点地图,又称网站地图,它就是一个页面,上面放置了网站上所有页面的链 ...

  6. 笨办法学Python(十八)

    习题 18: 命名.变量.代码.函数 标题包含的内容够多的吧?接下来我要教你“函数(function)”了!咚咚锵!说到函数,不一样的人会对它有不一样的理解和使用方法,不过我只会教你现在能用到的最简单 ...

  7. 西门子(SIEMENS)软件安装时需要重启的解决方法,regedit restart

    打开注册表(regedit) 删除注册表项 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manage\PendingFile ...

  8. MySQL入门很简单: 11 mysql函数

    1. 数学函数 2. 字符串函数 3. 日期和时间函数 4. 条件判断函数 IF(expr, v1, v2) // 如果表达式expr成立,返回结果v1,否则返回v2: IFNULL(v1, v2) ...

  9. MySQL入门很简单: 9 插入 更新与删除数据

    1. 插入数据:INSERT 1)为表的所有字段插入数据 第一种: 不指定具体的字段名 INSERT INTO 表名 VALUES(值1,值2,...,值n): 第二种:INSERT语句中列出所有字段 ...

  10. IOS NSThread 线程间通信

    @interface HMViewController () @property (weak, nonatomic) IBOutlet UIImageView *imageView; @end @im ...