【学习背景】
最爱语录:人生苦短,我用python!
Input(“Is life always this hard or is it just when you are a kid?”)
Print(“-Always like this.--里昂”)
Return:生活总是这样艰难吗?还是只是在你还是个孩子的时候?-总是这样。
【初步认识Python】Cmd-python-import this
The Zen of Python, by Tim Peters
《蟒蛇禅》,提姆·彼得斯著
Beautiful is better than ugly.
美胜于丑。
Explicit is better than implicit.
显式优于隐式。
Simple is better than complex.
简单胜于复杂。
Complex is better than complicated.
复杂总比复杂好。
Flat is better than nested.
平的比嵌套的好。
Sparse is better than dense.
稀疏胜于稠密。
Readability counts.
可读性计数。
Special cases aren't special enough to break the rules.
特殊情况不足以打破规则。
Although practicality beats purity.
尽管实用性胜过纯洁性。
Errors should never pass silently.
错误永远不会悄悄地过去。
Unless explicitly silenced.
除非明确沉默。
In the face of ambiguity, refuse the temptation to guess.
面对歧义,拒绝猜测的诱惑。
There should be one-- and preferably only one --obvious way to do it.
应该有一种——最好只有一种——显而易见的方法来做到这一点。
Although that way may not be obvious at first unless you're Dutch.
不过,如果不是荷兰语的话,这种方式一开始可能并不明显。
Now is better than never.
现在总比没有好。
Although never is often better than *right* now.
虽然从来没有比现在更好。
If the implementation is hard to explain, it's a bad idea.
如果实现很难解释,那是个坏主意。
If the implementation is easy to explain, it may be a good idea.
如果实现很容易解释,这可能是一个好主意。
Namespaces are one honking great idea -- let's do more of those!
名称空间是一个非常好的主意——让我们做更多的事情吧!
【前言】
1.学习目的:鉴于周期过长,而且时间有限,把学习目的明确化,不做python语言特性的全面学习,只学习其中常用、实用的部分,结合实际任务,培养python实战编程能力。
2.期望结果:
①希望达到理解编程基础知识,可以自主完成深入学习的效果。
②用python语言开发软件工具,编写基于python的自动化测试用例。
③面试或者工作中可以合理回答关于编程基础知识和语言设计的问题。
【软件安装配置】
1.www.python.org,官网安装python3.6.5,勾选path路径自动配置。
2.pycharm,python解释器,不勾选关联.py,其他内容,无脑安装。
配置:
①File-setting-project,导入已安装好的python3.6路径
②File-setting-editor-code style-file and code templates-python script:添加默认签名。
【编程历史】
1.编程的目的:用计算机代替人类,按照人类的想法完成衣食住行等操作,这些操作需要通过语言来完成。
2.语言分类:不同架构的CPU能执行的二进制机器码是不同的,比如X86和64位系统。
①编译型语言:c、c++、java、ruby、c#、javascript
②解释型语言:python(c语言开发的)
③机器语言:由1和0组成的二进制机器代码串(计算机唯一可以识别的语言),如:1010111
4.说明:
①c和c++,通过编译器编译成机器代码可执行文件,让cpu执行。
②java、ruby、python、c#、javascript,通过自带的第三方解释器软件(如python.exe),编译给cpu执行。
③而其实第三方解释器软件,本身也是c和c++编写出来的,最终翻译成机器代码给机器执行。
编译器就像一个文字翻译员,先翻译好全部文档后,给CPU去理解并执行。
解释器就像一个实时翻译员,在运行过程中实时翻译给cpu去理解并执行。
5.早期历史:最早期的程序员,就是用卡片打洞,有洞的地方为1,没有洞的地方为0。有点像发票。一旦出错,就需要重新打一份卡片单子。
直到后来发明了磁带机和磁盘,将0和1记录在磁盘上。
【python的特点】
1.亲近人类:由于python的抽象级别更加接近人类的思维方式,也更加表层,所以容易理解。
2.丰富的第三方库:由于开源,python有着超丰富的内置库和第三方库,可以直接搭积木般借鉴使用。
3.快速开发出测试工具:python可以快速开发出需要的测试工具,比如代码打包、部署生产环境、备份数据、excel导出数据等。
4.应用广:如学完python基础,再深入学习一点web服务的框架,可以成为初级的web后端开发工程师。
常见的python web框架有:Django、Flask、Tomado、Pyramid、Bottle
常见的python后台网站应用:豆瓣、知乎、Youtube、Instagram等
【python2和python3的区别】
测试常用的3个主要区别如下:
1.print语句的语法结构,有点点不一样。
2.整数除法的结果,有点点不一样。
3.Unicode编码格式,有点点不一样。python2默认ascii编码格式,python3默认utf-8编码格式。
4.2020年python官方不再维护python2.0版本,建议学3.0
【python解释器】
1.Python的执行,必须通过解释器。
①CMD:类似Linux的shell一样,用自带的cmd模式交互式命令行执行代码文件,敲一行执行一行。
②PythonIDLE:用自带的IDLE编辑器,编写简单的代码并且执行。
③Notepad++:文本编辑器,支持语法高亮,免费使用,支持中文语言包。
④Pycharm:优秀的python IDE,支持调试、语法高亮、project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等优点。
【python常用数据类型】
说明:程序主要目的就是对各种数据进行处理,所以需要深刻了解常用的数据类型。
1.整数(int):数学里面的整数,比如12345.
2.浮点数(float):数学里面的小数,比如3.14159.
3.字符串(string):常见的英文字母,比如‘my name is leo’。
4.布尔型():True、False。
5.运算符(+-*/%):括号可提高优先级。比如:2**3次方、9/4=2.25除法、9//4=2整除、9%4=1取余
6.拼接(+):“my name is”+“leo”
【python基础概念】
1.对象:python是一种面向对象的语言,在python中,万物皆对象,所有数据类型都可以叫对象。
2.变量:通过变量名赋值,让一个变量指向一个内存中的数据。比如:人的名字代表人的信息。
3.命名:字母+数字+下划线,不能以数字和下划线开头。变量名需要清晰便于一眼就理解。
4.赋值:C语言和Java语言,变量需要先定义再赋值。而python赋值过程中就已经被定义好了。
比如:myName=“leo1”。myName=“leo2”
过程:
①先创建一个字符串对象“leo1”;
②然后在命名空间创建一个变量名myName;
③用这个命名空间里面的变量名,指向(reference)这个字符串对象的地址和值。
④再创建一个字符串对象“leo2”,然后用变量名myName指向这个新字符串对象。
⑤python解释器定期检查对象“leo1”,没有被变量指向,为了节省空间,将会被清除掉。
【python字符串】
1.引号:字符串可以由单引号、双引号、三引号括起来,三引号可以跨行展示。
2.拼接:字符串可以用+号拼接,比如"my name is "+"leo"、“my name is” ‘leo’。
3.乘法:字符串乘法,比如“leo”*3,返回” leo leo leo“。
4.长度:获取字符串长度,比如len(“my name is :”),返回12
5.比较:s1=‘abc’;s2='xyz';s1 6.序列(squence):从左向右计数,0开始,N-1终止;从右往左计数,-1开始,-N终止。 7.切片(slice):操作符“[]",单个数字,返回一个字符。多个数字用:冒号隔开,返回一个字符串(多个位数截取,不包含索引的最后一位)。 比如:a=1-10;a[0:5]=1234;a[-3:-1]=89;'1' not in a,返回False; 【字符串的格式化】 1.通用格式:format(等待被格式化输出的字符串) % values(数值、字符串、list、tuple) 举例:print(”my name is %s,my age is %d,my money is %.2f” % ('leo',28,100.00)) 2.格式化符号: ①%s 字符串;%d十进制整数;%f 完整显示全部浮点数;%.2f 保留两位的浮点数; 特殊举例: '%9.2' % 12.34567890,→' 12.34'。 (4个空格+12+点+34,一共9位,保留2位) '%09.2' % 12.34567890,→'000012.34'。(4个0+12+点+34,一共9位,保留2位) ②%x和%X 整数转化为十六进制;%#x和%#X,转换为'0x+十六进制';%%,表示转义为% 特殊举例: "%x" % 108,→'6c'; "%X" % 108,→'6C'; "%#x" % 108,→'0x6C';"%#X" % 108,→'0X6C'; “we are at %d%%" % (100),→'we are at 100%'; 'Host: %s Port:%d' %('172.168.1.1',8080),→'Host: 172.168.1.1 Port:8080'; ③转义符号:\'、\'',\n、\\ 举例: print("\4xF\x50\x51\x52"),→OPQR 【流程控制:条件判断语句】 1.基础知识。 ①前言:一般类似python的高级语言,都包含条件语句和循环语句。 ②定义:条件语句就是当某些条件成立时,才会执行其区域内的某个模块,如果不成立,直接跳过该模块中的语句,执行模块后面的语句。 2.常用条件判断函数:从上向下执行,如果上一层判断Ture,将忽略掉剩下的elif和else。 2.1 单条件判断: if(单向判断):①定义变量;②条件判断;③冒号;④缩进;⑤模块语句。 else(双向判断):①定义变量;②条件判断;③冒号;④缩进;⑤True模块;⑥else;⑦False模块 elif(多重判断,可以有多个elif):同上。 2.2 多条件判断:a=60 if a>0 and a!=1:print(a); if a<60 or a>18:print("you can play game"); if not (a>=60 or a<=18):print("you can play game"); if (a>=60 and a<18) and gender=='boy':print(“you can play game”); 2.3 简写循环语句:x只要满足非零、非空字符串、非空list等,就返回Ture,否则Flase。 x=10; if x: print('x is not zero') 2.4 嵌套循环:大循环里面包含小循环,满足大循环后进入小循环,满足大小循环才完整执行。 name1="a" name2="b" if name1!=name2: print("name1 not same as name2") if name1 print(name1+"sit in left") else: print(name2+"sit in left") 【List列表】 1.应用:[1,2.2,'a',"b",[c,],'efg'],列表是python最常用的数据类型之一。 2.特点:tuple和list本身是一个关键字,所以不能定义变量为list,否则会被覆盖掉其功能。 ①列表的每一个元素,都可以是任何类型的python对象,比如数值、字符串、列表、元组等。 ②列表的每一个元素,都可以单独修改。(字符串的每一个元素只能重新创建,不能修改) 3.空列表: ①a=[] ②a=list() 4.sequence的切片:len(alist) alist[0:n-1],列表都是0开始,n-1终止。比如a[0:10]=1-10,alist=list(range(1,11,1)) alist[-n:-1],列表从-N开始,到-1截止。比如比如a[-15:-1]=1-9 【Tuple元组】 1.定义:tuple元组和list列表一样,也是一种sequence对象,类似c和java的数组概念。 2.特点:元素不可变。 ①tuple元组也是一种容器对象,和列表一样,可以存放所有类型的python对象。 ②tuple元组对象被创建出来后,和字符串一样,内容是不能变化的,只能重新创建。 举例: t=(1,3.14,'a',"abc",['a','b','c'],{'key':'values'}),和list一样可以包含所有类型的元素。 【切片的特点】 1Sequence切片操作都是创建一个新的元组对象作为返回值,原来的元组对象并没有改变。 2.Sequence类型的对象,可以单词赋值给多个变量。 比如: a,b=(1,2);c,d,e=[4,5,6];f,g,h='god'; print(a,b,c,d,e,f,g):→12345god 【函数】 1.位置实参:使用位置实参来调用函数,位置必须一一对应,例如pet(style="dog",name="lucky") 2.关键字实参:务必准确地指定函数定义中的形参名,例如 pet(style="dog",name="lucky") ①一旦第N个参数使用了关键字参数,第N+1个开始全都必须用关键字参数,否则会报错。 3.参数默认值:使用默认值,必须有默认值的参数放在末尾,例如def pet(name,style="dog") 5.可选实参:形参新增空字符串,例如middle=" ";函数体新增if middle:..else:判断。 4.函数必须先定义了才可以被调用,不然找不到函数,会报错。 6.函数返回字典和列表:函数可以返回任何类型的值,包含复杂的字段和数据; def get_name(first_name,last_name,middle_name=" ",age=" "): name={'first':first_name,'last_name':last_name} if age: name['age']=age return name full_name1=get_name("leo","smith","yep","26") print(full_name1); 7.退出设置:每次输入都加判断检查是否需要退出,例如:fname=input("");if fname="q":break; 8.函数理念:每个函数只一项具体的工作,可以在函数中使用其他函数,便于维护。 9.return返回值不是必填项,可有可无,有就正常返回,没有就单纯的执行代码块。 ①return["xyz",100,-98.6],return返回值可以是任何类型的值。 ②return,返回一个或者一组值,返回值需要一个变量储存和打印,例如 full_name=get_name(first_name,last_name);print("full_name") 【字符串的常用方法】 1.对象的分类: ①对象数据:属于静态对象,指对象所指向的空间所存储的静态数据。 ②对象方法:属于动态对象,指对象实际动态的行为,也表示该对象自带的成员函数。如sys.print() 比如: str.count,举例:'123 123 456'.count('123'),返回2.表示统计字符串中有几个子字符串。 str.starswith,举例:'123 123 456'.startwith('123'),返回True.表示字符串是否以123开头。 str.endwith,举例:'123 123 456'.endwith('123'),返回False.表示字符串是否以123结尾。 str.isalpha,举例:'abc123'.isalpha(),返回True.表示字符串中是否有字母。 str.isdigit,举例:'123abc'.isdigit(),返回True.表示字符串中是否有数字。 str.join,举例:';'.join(['i','like','play',''football']),返回'i;like;play;football'.表示用分号分隔一个列表。 str.split,举例:'123 456 abc'.split(" "),返回['123','456','abc'].表示遇到空格,就将前面部分分隔成单独的一个一个子字符串,并将结果返回到list列表对象中,这里的2个空格,分割成了3个子字符串的。 举例:'123;456;abc'.split(";"),返回['123','456','abc'] str.lower,举例:'CHINA'.lower(),返回'china'.表示全部转换成小写。 str.upper,举例:'china'.upper(),返回'CHINA'.表示全部转换成大写。 str.strip/str.lstrip/str.rstrip:将全部空格删除、左边空格删除、右边空格删除。举例:' good '.strip() str.replace:替换字符串。举例:'Tom is a dog.snopy is a dog'.replace('dog','pig') 【列表的常用方法】 1.创建空列表:a=[];或者a=list(); 比如: ①a.append(1,2);print(a);返回[1,2],末尾新增一个元素。 ②a.insert(0,3);print(a);返回[3,1,2],在第0个下标位置,插入3。 ③del a[1],返回[3,2],删除下标为1的元素。 ④a=[3,4,1,2];b=a.pop(1);print(b);返回4,删除并取出原列表下标为1的值,传给新变量。 ⑤a=[3,4,1,2,4,4,4];a.remove(4);print(a);返回[3,1,2,4,4,4,],删除值为4的元素(多个相同值元素,默认删掉第一个) ⑥a=[3,4,1,2,4,4,4];a.count(4);返回4,统计有几个4 ⑦a=[1,2,3,4,5];a.reverse();print(a);返回[5,4,3,2,1],列表倒叙排序。 【元组的常用方法】 1.a=(3,4,5,1,2,3);a.count(4);返回1,统计元组中有几个4 2.元素不能用del、remove等方法,因为元组值不可更改。 【学会查询官方接口说明文档manuals】 1.python安装成功后,点击开始,选中python3.7文件夹,打开“python 3.7 manuals” 2.前面讲道德字符串、列表、元组常用方法路径: The pyhon standard library→built-in types→Text Sequence Type -str→string methods *3.要想认真学好python,必须要一字一字的把英文学好,不然看不懂报错和提示,很尴尬 【输入和输出】 1.常用的输入输出:字符终端交互、图形界面交互 2.最新科技:语音输入交互、眼神交互、面部表情识别交互。 输入的内置函数:无论数字或者字符串,默认输入并赋值的是字符串类型。 user=input("Please input your age:") print("doubling your age is :%d" %(int(age)*2)) 【循环】 1.while cout<10:print(cout);cout+=1;表示计数循环,统计的次数。 2.while True:print('press ctrl+c to exit');死循环,点击ctrl+c可以退出。 【遍历字符串、列表、数组、字典】 1.a="name";for i in a:print(i);遍历字符串。 2.namelist=['alice','bob','candy','dave']; for i in namelist:print(i);遍历列表 3.nametuple=('alice','bob','candy','dave'); for i in nametuple:print(i);遍历元组 4.namedic={"a":"aclice","b":"bob"};for i,j in namedic.items():print(i,j); 5.sum1=0;for i in range(100):sum1+=i;print(sum1);遍历累计1到100的和 【循环嵌套】? 1.for i in namelist:for j in nametuple:print("%s like %s" %(i,j));i1/j1,i1/j2,i1/j3... 2.for i in alist:for j in blist:if j=="b2":break;print(i,"like",j);break中断当前循环 3.for i in alist:for j in blist:if j=="b2":continue;print(i,"like",j);continue跳过当条循环 【列表生成器】 1.list1=list(range(10)),创建简单列表 2.list1=[1000,2000,3000]; list2=(i *0,8 for i in list1 if i>0);创建list1元素8折的新表list2 【注释】 1.单行注释:# lalala 2.多行注释:'''lalala''' 【文件读写】*指针会随着每次操作移动 1.file_object=open(file_name,access_mode='r') 解释: file_object,表示文件变量名。 file_name,表示文件名称、或者可以是文件绝对路径、相对路径。 access_mode,表示访问方式, ①'r'表示默认缺省文件打开方式,仅为了读取文件而打开文件,文件指针在文件开头位置。 ②'w'表示为了写文件而打开文件。如果文件存在,原始内容将被清空。若不存在,将创建一个新文件。 ③'a'表示为了在文件末尾添加内容而打开文件。如果文件存在,文件指针在文件末尾;如果不存在,将创建一个新文件。 ④'r+'为了读写文件而打开文件。文件指针在文件的开头。如果文件不存在,将会报错。 ⑤'w+'为了读写文件而打开文件。如果文件已经存在,其内容将被清空;如果文件不存在,创建一个新文件。 文件读写举例: ①fp=open('d:\\file1') #open file for read,读文件 ②fp=open(r'test','w') #open file for write ,写文件 ③fp=open(r'd:/data','r+') #open file for read/write,读/写文件 2.读取内容的方法 file=open("f:\\test",'r');文件的打开 file.read();文件的读取 file.read(10);文件读取前十个字符,指针停在第十一个字符。 file.readline(1);文件读取第一行,指针停在第二行。 file.readlines();读出全部文件内容,并且把每行的内容存到一个列表中。 file.seek(offset,whence);光标移动位置。 ①第一个参数表示移动多少个字节的位置。0开始。 ②第二个参数0表示从开头移动,1表示从当前位置移动,2表示从结束位置移动。 ③第二个参数如果是1或者2,文件必须以二进制方式打开。所以常用还是0开始移动。 lines=file.readlines();lines[0]=第一行数据。表示全部读取文件,从0开始存储到索引中以供读取。 file.close();文件的关闭,每次读取后需要关闭,节省内存的占用 3.写入文件的方法 f=open(r'F:\test','w+') #打开文件 f.tell() #获取指针当前的位置 f.write('test line 1\n') #写入字符串到文件中 f.tell() #获取指针最新的位置 f.write('test line 2\n') #写入字符串到文件中 f.tell() f.seek(0,0) #移动指针到文件第一行的0起始位置 f.readline() #读取文件一行的内容,从头开始读起 f.tell() f.close() 【字典Dictionary】 1.定义:dict对象的存储表示键值对(kye-values)存储。 2.特点: ①dict是可变的 ②dict可以存储任意数量的python对象 ③dict可以存储任何类型的python数据类型 ④dict以“key:value”,即表示“键:值”对,形式存储数据,每个键都是唯一的。 ⑤dict根据键查找值得效率非常高。也被称为map或者hash table。 ⑥字典类型的元素可以使字典类型。比如:stu={'leo':{'age':14,'sex':'boy'}} 举例:a={'name':'alice','age':28};print(a['name']);返回'alice' 3.字典的操作: ①添加dict[1]='abc',比如:d1={};d1[1]='abc';d1[2]=3.15;d1[3]='hello world';print(d1); ②修改dict[1]=123,比如,如果字典对象已存在,dict[1]='efg'就是修改对象。 ③指定key值删除del dict['name'],或者,末尾删除a=dict1.pop('name'),返回key:values 4.字典的遍历: ①stu={'alice':20,'bob':21,'candy':'hello'}; for name in stu:print("name:%-20s,age:%s" %(name,stu['name'])) ②stu={'alice':20,'bob':21,'candy':'hello'}; for name,info in stu.items():print("name:%s,age:%s" %(name,info) 【函数】参数定义顺序:必填参数、缺省参数、可变参数、关键字参数。 1.局部变量和全局变量:global x x=5 def f(): global x #去掉这句,X就成为局部变量 x=10 print(x,'in neibu') f() print("--------------") print(x,'in waibu') 2.缺省参数:age=0,必选参数在前,缺省参数在后,缺省参数可以多个。 #统计班级男生、女生的人数 stu=[ {'name':'alice','age':10,'sex':'boy'}, {'name':'bob','age':20,'sex':'girl'}, {'name':'candy','age':30,'sex':'boy'}, {'name':'dave','age':40,'sex':'boy'}, ] def cout1(stu1,age=0): #缺省参数 boylist=[] girllist=[] for i in stu1: if i['sex']=='boy': boylist.append(i['name']) elif i['sex']=='girl': girllist.append(i['name']) print(len(boylist)) print(len(girllist)) cout1(stu) #缺省默认值age,再调用函数的时候可传可不传 3.可变元组参数:* ①传入的参数是元组时:def calc(*number):;可以传入任意数目的元组数据。 ②传入的参数是列表时:nums=[1,2,3...];calc(*nums);传入任意数目的列表数据。. def calc1(*number): #要想传入任意值,需要*+形参 sum1=0 for i in number: sum1=sum1+i*i return sum1 calc1(1,2,3) nums=(1,2,3,4,5);calc1(*nums) #传入列表,需要*+表名称 4.不确定的关键字字典参数: ①传入的参数不确定数目:def stu(name,age,**info):,会把多余信息传入info字典里面。 ②已有列表传参数:stus={'city':'beijing','job':engineer'};stu('jack',24,**stus) def func(a,b,c=0,*info,**other): print('a= ',a,',b= ',b,',c=',c,',info= ',info,',other= ',other) func(1,2) func(1,2,3) func(1,2,3,'name','age') func(1,2,3,'name','age',x=100,y=1000) ---返回 a= 1 ,b= 2 ,c= 0 ,info= () ,other= {} a= 1 ,b= 2 ,c= 3 ,info= () ,other= {} a= 1 ,b= 2 ,c= 3 ,info= ('name', 'age') ,other= {} a= 1 ,b= 2 ,c= 3 ,info= ('name', 'age') ,other= {'x': 100, 'y': 1000} 【调试程序】 1.方法一:通过print,打印每一个模块的值,缩小错误范围,排查错误 2.方法二:pycharm,通过加断电,单步执行(跨函数、进函数、查看内存变量,查看调用栈等) 【字符集和编码:中文】 1.基本概念:字符集就是用来表示语言符号的数字的集合。重点,指的数字。 2.常见字符集: ①ASCII字符集. ②Unicode字符集 ③GB2312、gbk、gbk18030 3.字符集编码: 基本概念:字符集编码指把字符集里面的字符对应计算机数字,(比如磁盘)存储下来的方法。 常见编码格式: ①ASCII ②UTF-8 ③GB2312、gbk、gbk18030 4.字符集解码 基本概念:字符集解码就是把编码好的内容还原成数值形式,也是字符集编码的逆向过程。 举例说明:比如把utf-8编码好的字符串,还原成unicode数值的形式放在内存中。 5.字形(glyph)和字体(font) 定义:如果想把字符显示在显示器和打印机上,必须定义一个字符显示标准。通过点阵或者矢量图的方式可以显示字体。字体文件就是存储了一种字符编码里面所有文字到字形的集合。 总结一下:文字的显示流程。 步骤①:文字首先以某种编码形式保存在一个标准文件中,文件里面有所以文字的字形。 步骤②:程序读取文件中的文字并且解码到unicode。 步骤③:程序调用操作系统windows服务,按照unicode在字体文件中查找字体图像,画出字形显示到窗口上。 【编码格式:中文说明】 1.前言:任何代码文件,只要是存储在磁盘上的文件,都是以某种编码格式保存的。比如utf-8,gbk 2.背景: ①python2解释器在加载代码文件的时候,默认是认为文件的编码格式为ASCII格式。 ②python3解释器在加载代码文件的时候,默认是认为文件的编码格式为UTF-8格式。 ③IED-Pycharm创建代码,默认以utf-8保存文件,右下角可以显示/切换当前文件的真正编码格式。 ④如果gbk格式的代码,通过pycharm等utf-8格式的IDE加载代码,需要加上#coding=gbk的编码格式 【模块Moudule和包Package】层级关系:函数-模块(文件)-包(文件夹)-库 1.模块:python中,代码是放在.py为扩展名文件中的,一个.py文件,就称为一个模块(Module)。 2.包:许多模块按照功能放在不同的目录中来组织模块,这些组织存放模块文件的目录,称为包。 3.优点:大大提高代码的可维护性,模块、函数在python中都是一种对象(万物皆对象)。 ①便于引用:一个模块引用另一个模块(包括内置模块、第三方模块)的对象(包括数据和函数) ②避免重复:一个模块处理一个功能,内容不多,就可以避免创建变量时不会因为代码多而重复。 【引用模块】 1.单个模块导入:import sys(导入模块的函数、默认变量等)、sys.print() 2.多个函数导入:form sys import print,arvg、from sys.sys1.sys2(文件层级) import print 3.整个模块导入:form sys import *、 4.查看模块路径:import sys;sys.path;,返回当前模块的列表值路径。 5.修改导入模块/函数的名称:import sys as sys1、from sys import print as newprint 【引用包】 1.前言:必须包含初始化文件:__init__.py。 2.定义:所有的目录结构中,__init__.py初始化文件都必须能存在,在我们使用form-import语句的时候,会执行里面的代码,即使没有初始化代码或者任务要执行,也必须有一个空初始化文件。 3.导入包/模块/函数后调用,比如当前系统时间、window的工具等内置库。 举例:import time; time.strftime("%Y_%m_%d %H:%M:%S"),返回当前时间'2019_06_01 09:00:00' 举例:import os;os.system("calc"),返回并调用windows下的calc计算机。 【模块搜索路径】 1.前言:python解释器启动的时候,会自动加载启动脚本所在的路径到lib.path里面去。 2.流程:类似于windows需要使用某一个新工具,手动配置系统环境变量path一样。 3.标准库目录:常用的标准库,随着安装python程序,自动加载成功放在“lib/site-packages”目录。 4.默认路径在lib/site-packages“里面,我们也可以根据需要动态的修改sys.path里面的路径内容。 【pip第三方库】 1.前言:Python的优点就是通过高层抽象简洁的语法,调用丰富海量的内置库和第三方库,可以写出更加简洁的代码,实现大部分功能。 2.区别:第三方库(包括包和模块),默认没有被安装,需要手动安装,安装后和内置库没有区别。 3.pip工具会从网络上的python库网站,下载第三方安库安装包进行安装,过程类型yum和apt-get。 4.版本:目前python2的2.7.9和python3的3.4以上,自带pip安装工具。 5.命令:pip install 第三方库名称。比如 pip install Django,就可以安装著名的web-app框架Django 6.默认路径:安装第三方库,默认存放在python的Lib/site-packages文件夹目录下。