毕业10年了,做测试也8年了,期间学习了各种开发语言、工具:java、vb、loadrunner、jmeter、robotframework等,最终都是不成体系。笔记也是摘抄自网络,日久不用自然而然的就废掉了。今年老同事聚会,聊的最多的就是中年危机;一起出道的小伙伴,大部分都已经改行或走的更远了,感觉自己还是再原地踏步,今年再不努力,明年可能就找不到工作了。今年的目标时:熟练应用python(基础)、robotframwork(interface、h5、app)加油,2018!。先从python基础入手,接下来的笔记就是来源于网络老师的课程。
本节内容:
- Python介绍
- 发展史
- Python 2 or 3?
- 安装
- Hello World程序
- 变量
- 用户输入
- 模块初识
- .pyc是个什么鬼?
- 数据类型初识
- 数据运算
- 表达式if ...else语句
- 表达式for 循环
- break and continue
- 表达式while 循环
- 作业需求
一、python介绍:
python的创始人为吉多·范罗苏姆(Guido van Rossum)。最新的TIOBE排行榜,Python赶超PHP占据第五, Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。
目前主要应用领域:科学计算、人工智能、web开发、云计算、金融
在一些公司的应用:知乎、youtube、facabook的大量基础库
python时一门什么样的语言:
主要从以下几个角度为进行分类,编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言
编译器:把源程序的每一条语句都编译成计算机语言,并保存为二进制文件。这样运行时,计算机可以直接以机器语言来运行该程序,速度很快。
解释器:只有在执行程序时,才一条一条的解释成机器语言给计算机运行,所以速度慢---python就是该是解释器
动态语言:在用动态类型的语言编程时,永远不会给任何变量指定类型,该语言会在第一次给变量赋值时,在内部将数据类型记录下来------python、ruby为代表
静态语言:在编辑期间会检查会检查数据类型,也就是说写程序时,要声明变量的数据类型---java、c++为代表
强类型定义语言:一旦一个变量被指定了数据类型,如不哦不强制转换,那么它永远是这个数据类型---python为代表
弱类型定义语言:一个变量可以赋不同类型的值
python优点:
扩展性强、高级语言、移植性强、简洁、可嵌入
四、安装:
windows:百度即可下载最新的安装包、注意pthon3才是未来,python2 在2020就会停止更新
linux/mac:自带python,注意升级
五、Hello world程序

#! /usr/bin/env python pirnt ('Hello world!')
linux中可以直接通过命令python hello.py来指定解释器,如果直接./hello.py就需要加上第一行代码来制定默认python解释器。记得windows会从环境变量中去找解释器来执行。
六、变量和字符编码
变量命名规则与其它语言基本一致:
①、变量由字母、数字、下划线组成;
②、不能以数字开头;
③、系统已使用关键字不能当变量名,如: ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
④、虽然中文变量可以生效,但是别使用中文变量
字符编码:
ASCII:只占一个字节(8字节)存储空间,所能存储为2**8,共可标识255个数据。所有大小写字母、特殊字符,总计127个,还有剩余139个空间。
GBK:在139个空间中,建立了索引,指向了GBK编码,最初只有7000个,后来不断扩充,直到3W个。该编码所占空间2位。
Unicode:因为各国在征用139个空间,导致各国都建立自己的编码各式,在混合使用中,容易出现乱码;所有出现了unicode-万国码。该编码至少占2个字节。
UTF-8:实在unicode的基础上进行了优化,ASCII中的内容占一位,欧洲的字符占2个字节,东亚的字符用3个字节保存。
name = "Alwin chen" name2 = name print ("My name is:",name,name) name = "PaoChe Ge" print ("Name2 is:",name2,"!.And Name is:",name) ''' name2首先指向name值的内存地址,然后name指向的地址变更了,但是name2并不变更,所以值不变 ''' 中文='我是中文变量' #不要这样写变量 print (中文) gf_of_oldboy = "我是标准变量" print ("打印标准变量,请注意:",gf_of_oldboy) PIE="3.14" #常量定义 print ("打印常量:",PIE)
#二级制讲解 2的N次方=2的(N-1次方)+2的(N-2次方)+...2的0次方+1 狼烟例子 n2 = 2**8 print ("次方表示:",n2)
七、用户输入
#!/usr/bin/env python name=input("Input your name:") print ("Your name is {0}".formate(name))
python2.X中输入时通过Raw_input,getpass在pycharm中运行会出现长期等待,在cmd的python环境中运行正常;python3.X中input就等于Raw_input
name = input("Input your name:") age = int(input("Input your age:")) #因为python是强类型,所有输入默认为str,如果不转换为int,输出中使用%d,就会报错 print (type(age)) password = getpass.getpass("Input your password:" ) #pycharm中不好使用getpass,需要在CMD PYTHON或IDE中执行 job = input("Input your job:") salary = input("Input your salary:") info_1=""" -------------------info1 of %s-------------------- name:%s age:%d job:%s salary:%s """ % (name,name,age,job,salary) #注意这里是% ,不是格式化format;该组变量必须与引号中一一对应 info_2=""" #此种打印方式最常用,注意必须使用三引号,才能用该模式 -------------------info2 of {_name}-------------------- name:{_name} age:{_age} job:{_job} salary:{_salary} """.format(_name=name,_age=age,_job=job,_salary=salary) # python中变量都需要用花括号; info_3=""" #此方式0123必须和变量名意义对应,顺序不能错 -------------------info3 of {0}-------------------- name:{0} age:{1} job:{2} salary:{3} """.format(name,age,job,salary) print (info_1,info_2,info_3)
八、模块初始
python由非常强大的标准库和第三方库。引入任何库,会优先从代码所在目录寻找,然后再从环境变量中寻找。例如:
#!/usr/bin/env python import sys print (sys.argv) #python test.py hello world ['test.py','hello','world'] #把脚本传递的参数获取到了
#!/usr/bin/env python import os os.system('df -h') #调用系统命令
结合上面
1 #!/usr/bin/env python 2 3 import os,sys 4 5 os.system(''.join(sys.argv[1:])) 6 7 #把用户输入的参数当作一条命令交给os.system来执行
import os # 09 模块 print (sys.path) #环境变量中得路径,如果引用模块,会从当前目录寻找,没有再从环境变量site_package中寻找,在没有就报错 print (sys.argv) dir = os.system('dir') #windows中打印当前目录;linux中是'll' print ('---->',dir) #结果为0,是因上一行只执行命令,并返回命令是否成功;0--成功 dir = os.popen('dir').read() #不加read打印的就是对象的内存地址 print ('========>',dir) # os.mkdir('newdir') #在当前路径创建目录
也可以自己写模块,然后调用
十、pyc是什么鬼
PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。
当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。
当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。
所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。
当第三次运行时,会对比pyc的更新时间和py的更新时间对比,如果py更新,那就重新编译一次。
十一、数据类型初识
1、数字
分为int(整型)、long(长整形)、float(浮点型)。
①、int:
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
python3中只有int型了,没有long型。
②、long:
当int长度过长时,自动转换为long。
③、float:
浮点数时用来处理带小数的实数,类似C语言中double,占8个字节(64位),其中52位表示底,11位表示长度,一位表示正负。
④、complex(复数):
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
2、bool(布尔值):
真或假,即1或0
3、string:
‘hello world’

#三元运算符 a = 1 b = 3 c = b if a >b else a print (c)

# 03 if else判断与缩进 _name="Alwin" _password="123456ab" name = input("Input your name:") password = input("Input your password:") if _name==name and _password==password: print ("Welcome user {0} to login".format(name)) else: print("Invalid username or password") print ("if is over") ################################################### # 04 if elif 判断 wife_age = 18 input_age = int(input("input your wife age:")) if input_age>wife_age: print("think small") elif input_age == wife_age: print("""Great!Your wife age is:{a}""".format(a=wife_age)) else: print("think bigger")
十四、while循环
# 当循环3次后,如果用户还想继续循环则可以这样写 wife_age = 18 count = 0 while count < 3: input_age = int(input("input your wife age:")) if input_age > wife_age: print("think small") elif input_age == wife_age: print("""Great!Your wife age is:{a}""".format(a=wife_age)) break else: print("think bigger") count+=1 if count == 3: #最后一次循环时,count已经等于3了;有了这段代码,就没有必要使用下方的else confirm_continue = input("Do you want to continue?...Input 'y' is mean to continue...") if confirm_continue == 'y': count = 0 #else: #当while模块不成立时,就执行该模块;平时也可以不要该模块 # print("you have tried too many times..fuck off!")
十五、for循环,break,continue
################################################### # 06 For循环 for i in range(5): #默认打印0到4 print (i) for j in range(0,5,2): #设置了步长 print(j) wife_age = 18 for i in range(3): input_age = int(input("input your wife age:")) if input_age > wife_age: print("think small") elif input_age == wife_age: print("""Great!Your wife age is:{a}""".format(a=wife_age)) break else: print("think bigger") else: #和while一样,for循环正常执行完成后,就会执行else;如果循环中遇到break,就不会执行else print("you have tried too many times..fuck off!")
十六、嵌套循环
# 08 嵌套循环 for i in range(10): print ("----------------------current i is:{0}".format(i)) for j in range(10): print (j) if j > 5: break #结束当前循环,也就是嵌套内的for循环
入门拾遗:

msg = '我爱天安门' print (msg) print (msg.encode('utf-8')) #encode中需要写入msg之前的编码格式;windows中默认使用的utf-8编码,所以,这里的utf-8可以不用谢 print (msg.encode('utf-8').decode()) #decode这里也是默认utf-8,所以可以不用写
来源:https://www.cnblogs.com/Alwin2018/p/8735531.html