
Python语法快速入门
面向C++程序员的Python语法快速入门
zhaopeng01zp
这个作者很懒,什么都没留下…
展开
-
34、python的异常处理抛出和自定义
print("Test Exception")list1 = []try: print(list1[3])except IndexError: print("IndexError") try: print(list1[3])except IndexError as e: # 把错误内容给打印出来 print("IndexError:", e)程序输出:Test ExceptionIndexErrorIndexError: list index .原创 2020-10-27 18:46:25 · 269 阅读 · 0 评论 -
33、Python多线程编程互斥锁和通信队列
写一个生产者消费者的测试Demo来演示:print("Test Thread")from threading import Threadfrom threading import Lockimport timefrom queue import Queue# == False时退出所有线程is_running = True # python的变量一般不大写# 互斥锁mux = Lock() # 锁的申请原则:尽晚申请,尽早释放# 产品队列products = Queue()#原创 2020-10-27 18:37:05 · 259 阅读 · 0 评论 -
32、python多进程编程代码演示
print("Test Process")# 导入进程模块from multiprocessing import Processimport time, os# 创建进程 进程入口函数 进程参数(是个元组类型)def proc_func(name): print("proc_func") for j in range(10): # 打印进程号 print(j, "child func", name, os.getpid()) tim原创 2020-10-27 18:34:56 · 449 阅读 · 0 评论 -
31、python多进程编程分析
原创 2020-10-27 18:33:16 · 97 阅读 · 0 评论 -
30、python导入包和子包
我们先创建一个包,所谓的包就是创建一个目录,里面有一个__init__.py文件。我们在common目录下创建一个mypack的目录,在该目录里面创建下列3个.py文件:# mypack/__init__.pyprint("mypack init")def init(): print("mypack init function")# mypack/video.pyprint("video module")def view(): print("video view")# mypack/原创 2020-10-27 10:40:45 · 1940 阅读 · 0 评论 -
29、python导入import模块module的路径设置
还有一种情况,就是对于模块的导入来说,这个模块如果不在我们安装的Python目录下面,或者是不在我们指定的目录当中,这个时候需要我们给它设定这个模块的导入路径。# 模块文件 pymod.pyprint("pymod")如果我们直接导入其他目录中的.py模块的话,报错:---------------------------------------------------------------------------ModuleNotFoundError原创 2020-10-27 08:30:58 · 5844 阅读 · 0 评论 -
28、python模块导入几种方式
模块的引用我们要建两个文件,一个模块文件,一个运行测试文件。# 模块文件 myMod.pyprint("in my mod")def modFunc(): print("function modfunc") class MyMod(): def __init__(self): print("Create MyMod")# 测试文件 testModule.pyprint("Test Module")# 导入模块import myMod# impo原创 2020-10-27 08:06:54 · 296 阅读 · 0 评论 -
27、python的模块和包的寻址引用分析
Python module模块:我们来讲下Python的模块和包,这部分内容是跟我们后面做扩展息息相关的,因为我们最终做的C++程序就是以模块的方式提供给Python,当然了,还有另外一种方式,就是直接通过动态链接库、通过ctypes来获取,除了这两种方案,当然还有其他方案,方案比较多。我们主要讲两种方案,一种就是直接动态链接库,通过Python的接口来调用;还有一种就是我们直接编译成Python的模块。当然了,Python的模块不只是用来做扩展用的,因为Python本身就可以开发自己的模块,..原创 2020-10-26 20:31:08 · 585 阅读 · 0 评论 -
26、python类的继承和函数重载
# 类继承class Video(object): # 4、私有成员变量 两个下划线开头定义的变量就是私有成员变量 __name = "private name" # 3、直接声明成员变量 # 声明的意思是这个变量的空间不产生,只有当Video生成对象的时候这个空间才产生,所以叫声明 age = 20 path = "" # 构造函数 def __init__(self, path): print("Create Video原创 2020-10-26 15:59:26 · 655 阅读 · 0 评论 -
25、python类的普通成员变量和私有成员变量
我们来演示下:类的创建,成员变量,构造函数和析构函数,普通成员函数,访问私有成员变量。print("Test Class")class Video(object): # 4、私有成员变量 两个下划线开头定义的变量就是私有成员变量 __name = "private name" # 3、直接声明成员变量 # 声明的意思是这个变量的空间不产生,只有当Video生成对象的时候这个空间才产生,所以叫声明 age = 20 path = "" # 构造函原创 2020-10-26 14:48:54 · 319 阅读 · 0 评论 -
24、python面向对象编程构造函数和析构函数
Python提供了一个函数dir,可以传对象,也可以传类名,它可以打印出这个类里面的所有成员。<class ‘main.Video’>其中这个__main__对应的是模块的名称,因为我们是Python程序,以后我们会写多个文件的程序,多个文件会涉及到每个文件一个模块,多个文件的话还得知道从哪个文件开始执行,所以还得有一个入口文件,在我们Python当中入口就是一个模块,就是__main__模块,所以在这个模块下面的类都是__main__.类名。...原创 2020-10-26 13:07:32 · 308 阅读 · 0 评论 -
23、Python函数中变量的作用域scope
其实变量的作用域在有函数出现的时候才有价值,因为涉及到在函数内部定义的变量,还有在函数外部定义的变量,是在闭包当中定义的变量,还是在闭包的外部函数定义的变量,就是出现了不同区域的变量。所谓作用域,就是这个变量出了这个作用域,这个变量会释放,因为引用计数会减1,还有一个作用,就是当出现名称冲突的时候,它优先取哪一个变量,本地有这样一个变量,全局也有这样一个变量,你取哪一个,那就是作用域优先级的问题。我们Python语言在取到一个变量之后,Python有一个查找的次序,比方说这个变量名a,Python从哪原创 2020-10-26 10:54:08 · 261 阅读 · 0 评论 -
22、Python的lambda表达式
Python的lambda,即匿名函数。其实lambda只是为了做这样一个生成函数,它有一个参数和一个语法表达式,也就是说它的函数是固定模式,就是你传参,然后根据表达式算出一个值,自动返回。也就是省略了定义函数名,设置参数,设置返回值。因为经常会用到这种用法:一个参数传进来,然后给一个返回值出去,所以把这种函数变成一个lambda,其实有时候expression就是一个公式,把参数定义好,公式一算就返回出去了,所以用lambda这样一个函数来定义。那lambda具体怎么用呢?lambda表达式要赋原创 2020-10-26 10:26:24 · 246 阅读 · 0 评论 -
21、python的闭包函数closure
闭包就是一个内嵌函数,在一个函数内部再定义一个函数,那这样定义的话就会有一个问题,函数是有访问的区域的,每个变量都有它的作用域,这个时候在函数内部它又有内嵌函数,那它的作用域是什么样子?本地变量就是在函数内部定义的,那这个时候你是函数内的函数,那你这个内嵌函数能不能访问你外部函数的变量呢?在函数内部定义函数有什么意义呢?我们在一个函数内部定义内嵌函数,可以用来返回这个内嵌函数,为什么要这样返回呢?像上图那样调用之后会有什么好处呢?第一个就是说,我们返回这个内嵌函数之后,我们函数内部的变量例如b就会原创 2020-10-26 10:01:46 · 165 阅读 · 0 评论 -
20、python的函数返回值的多种形式
注意一点就是我们Python的函数return之后,比方说它定义了一个局部变量,当出了这个函数,这个局部变量的引用计数会减1,在C语言当中出了函数作用域的话局部变量是直接被销毁的,而我们Python并没有局部变量这个概念,我们都是引用,所以只要出了作用域,引用就会减1。那么问题就来了,减1是不是就没了,我们return出来之后是不是就不能访问了?并不是。在Python的return当中,它会把它再加1,首先它出来,先调return函数给它加了1,它本来引用计数是1,我们return的时候把这个变量re.原创 2020-10-26 09:36:11 · 1687 阅读 · 0 评论 -
1、print输出格式设定和代码演示,print输出到文件并输出csv格式的excel表格
原创 2020-10-22 22:51:52 · 533 阅读 · 0 评论 -
2、python注释分号和换行基础语法
原创 2020-10-23 07:46:59 · 291 阅读 · 0 评论 -
3、python的基础类型分析和整形浮点型的内部存储分析
我们发现num的地址发生了变化,每次我们把变量的值换掉之后,它就引用了一块新的地址空间。我们来看一下这个内存结构:一开始num=1的时候,其实num里面存放的是一个地址,这个地址假定是1001,对应的是一块内存空间,这个1001内存空间里面存放的值是1;当我们把num改成1.0之后,这时候num里面存放的是另外一个地址1002,指向的是另外一块float类型的内存空间,里面存放的值是1.0。当我们num等于1.0的时候,上面那个num所对应1001地址空间的引用计数其实已经被置0了,因为当n...原创 2020-10-23 08:49:54 · 192 阅读 · 0 评论 -
4、python布尔bool类型内部存储分析
原创 2020-10-23 09:44:50 · 383 阅读 · 0 评论 -
5、python复数的C语言内部结构分析
原创 2020-10-23 10:16:32 · 120 阅读 · 0 评论 -
6、python的算数运算符
原创 2020-10-23 19:58:49 · 244 阅读 · 0 评论 -
7、python字符集问题分析
python源码用的是UTF-8;而python内部存储用的UTF-32,也就是UCS4这种方式来存储,取出来的时候它不一定是用这种方式来取出,它会根据你当前的编码来转码,当然python也提供了几个转码的函数,来给我们转换成不同的编码方式,然后以字节流的方式输出出来。...原创 2020-10-23 20:14:37 · 137 阅读 · 0 评论 -
8、python字符串的访问和截取方法
其实对于python语言来说,它的很多变量是不能更改的,包括前面讲过的Number类型,它也是不能更改的,但是Number类型我们看不出来它不能更改,而字符串我们是能看出来的。比如我们想把字符串"测试字符串001"其中的一个字或连续几个字改掉,它是不可以改的,那如果我们想改该怎么办呢?那我们只能创建一个新字符串,通过替换、部分复制,把它拷贝进新串里面去;所以在这部分处理的话,对于python来说涉及到字符串处理的效率是非常低的,所以涉及到这部分处理的时候你一定要慎重,包括一些替换等操作的时候。我们.原创 2020-10-23 21:01:00 · 466 阅读 · 0 评论 -
9、python字符串多行处理的三种方法
python的字符串你既可以用单引号来设定,也可以用双引号设定。假定我们这个字符串里面有很多转义字符,我们可以让该字符串里面的转义字符不做转义,把它们都变成普通的字符串了。通过一对3个双引号把上图中多行字符串拼起来,而且可以看到换行格式都在里面。...原创 2020-10-23 22:45:44 · 1807 阅读 · 0 评论 -
10、python字符串拼接和格式化
我们再看看在运行时的拼接:除了这种格式化之外呢,我们学过C语言的sprintf可以格式化输出一个字符串,通过一些格式化的字段来设置这个;我们python当中同样也有这样的一种语法:字符串长度:可以看到汉字跟ASCII码对应的其实都占1位,函数len获取的并不是空间大小,而是整个的字数。...原创 2020-10-23 23:14:06 · 197 阅读 · 0 评论 -
11、python _list数据结构内部存储分析
Python list的一些特性:Python提供了一个列表来访问所有数组类的数据,我们之前讲了Number数字类型的和字符串类型的,它们都是不可更改的、只读类型的,也就是说你一个整数或者浮点数,你这个值存到变量当中之后是不能更改的,我们每次给它重新赋值之后,会创建一个新的对象赋给它,所以说不存在更改,而我们Python list它里面是一个列表或者是一个数组,其实列表里面的指向是可以更改的,它是一个可变列表。这个其实只是Python内部有的这种特性,其实很多其它语言都不会出现这种可更改、不可更改,Py原创 2020-10-24 09:03:57 · 599 阅读 · 0 评论 -
12、python_list数据访问插入删除代码示例
我们Python的list里面可以存放任意类型的数据结构,当然了,在C++当中你用一个list来存放的时候,你也可以存放多种数据结构,里面可以存放指针,让指针指向不同类型的数据结构,其实对于Python来说,list内部就是存放的指针,然后指针指向了不同的变量。现在需要做成二维数组:那怎么访问它呢,访问的方式很直观,直接通过下标的方式访问:修改数据:说明这个list存放的是一个地址的列表,而这个列表其中一个地址指向的空间被我们换掉了。在列表某个位置插入新的元素:删除元素:...原创 2020-10-24 11:28:10 · 115 阅读 · 0 评论 -
13、python_tuple元组
tuple元组这种类型和list的接口基本都一致,前面讲过的list的接口在这里都能用,都是一样的接口,我们主要看看它们有哪些区别:1. 指向不可更改一个元组创建好之后,里面多少个元素,它们的指向是不能变的,元组里面可以包含一个str、一个整型、甚至可以再包含一个list,但是你包含的这些元素不能变,就只能包含这些,不能增加、不能修改,它是只读的。但是要注意一点,我们这边说的是指向不能更改,我们Python的变量可能不同于其他语言,例如C语言有局部变量,局部变量里面存放的是具体的值,而我们Python原创 2020-10-24 21:37:40 · 109 阅读 · 0 评论 -
14、python_dictionary存储hash表分析
Dictionary通过名字你就知道它是一个字典,字典的话那就是有一个关键字和值,我们通过关键字来查找对应的值。Dictionary的内部存储机制:hash表我们Python中的Dictionary是基于hash表,hash表的存储方式跟树有什么区别呢?首先它的存储空间还是连续的,也就是说它的读取速度会更快,因为如果用树来存储的话,它的读取速度是O(logn),而如果我们用hash表来存储的话,它的读取速度是O(1),也就是说只要经过单次操作就可以直接访问到这个值,它是怎么做到的呢?就是把每一个ke原创 2020-10-24 22:14:33 · 218 阅读 · 0 评论 -
15、python_dictionary代码演示
{“key1”:value1, “key2”:value2}key需要计算hash值,value可以装任意类型。注意一点,对于value来说它就相当于一个容器,容器就是什么都可以往里面装,但是对于key来说,它是有限定的,因为key是要用来计算hash值的,目前key应该是支持str和Number类型的。新增和更改:删除和判断关键字是否存在:...原创 2020-10-24 22:46:03 · 82 阅读 · 0 评论 -
16、python的if条件判断语法
pass是一个语法,这个是只有Python才有的语法,因为Python的代码是通过行对齐来判断一条语句的(在Python中排版的作用很重要),但这个时候就存在一个问题啊,你像上边你写了elif判断条件2的时候,如果这个时候我没有紧挨着判断条件2下边的那条执行语句的话,那你这边该怎么办?我只想这条我暂时不处理,但是你这边没有这条执行语句,那它这里的语法就会发生错误,找不到这个语法,所以说我们这时候就可以加一条pass来加这样的一个对齐,来表示这条执行语句。你知道在C或者Java语言中有switch,但是在.原创 2020-10-25 16:22:52 · 233 阅读 · 0 评论 -
17、python的while循环语句
Python的while与C或者是其他语言的语法有一些区别,就是它会有一个else语句,也就是说当判断条件不满足的话,它会进一次else语句,这也是在很多应用当中可以用到这个else,也就是说最后一次的处理,当判断条件不满足,退出的最后一次,我们可以做一些处理工作。注意,执行到break,会退出整个循环,并且也不会进else语句了,大家要注意这一点。while当中的else语句:无限循环、break、continue:...原创 2020-10-25 16:59:26 · 111 阅读 · 0 评论 -
18、Python的for循环语句
while循环语句一般做无限循环或者是一些条件的判断,而我们for循环一般用于一个序列的遍历,或者一些数据的遍历。这个序列可以是一个list,也可以是一个Str,因为Str也是一个由多个字符组成的序列。上图中那个variable变量,在每一次进入for循环的时候,也就是说for的每一次循环就会取序列里面的一个值,通过这个变量来访问序列里面的值。在Python中for循环语句的特殊之处,也是提供了一个else语句,就是当最后一次这个for循环变量不在这个sequence序列里面的时候,也就是说我们遍历原创 2020-10-25 17:29:23 · 157 阅读 · 0 评论 -
19、python函数的参数默认可变和关键字参数
函数参数有几种类型:- 必选参数也就是说你如果不传参,它会抛出错误;- 默认参数 fun(a, b=3)可以直接给它赋一个默认值,那这个时候调用这个函数的时候,你可以只传一个参数,默认参数不传,但是注意,默认参数后面不能有普通的必选参数,如果你中间是默认参数,你后面再有一个必选参数,那你这个默认参数的意义就不大了,因为你必须得传一个参数,所以它不会有,所以从语法设计上它就限制了你不能这样做。** - 可变参数 fun(fmt, *args) **可变参数只能是最后一个参数,因为它是可变参数,..原创 2020-10-25 23:08:42 · 439 阅读 · 0 评论