Python简介
- python的创始人:吉多.范罗苏姆(Guido van Rossum)
- 1989年圣诞节期间,作为ABC语言的一种继承
- 最新TIOBE排行python语言排名第四(2016),Python运用越来越广泛。
目前Python擅长应用领域:
- WEB开发:众多的WEB框架,Youtube、Dropbox等都是用的Python开发的,典型框架有Django、pyramid、tornado、bottle、flask、webpy
- 科学运算:SciPy、ipython、pandas
- 运维自动化:openstack、saltstack、ansible、腾讯蓝鲸
- 图形GUI:PyQT、WxPython、Kivy
- 网络编程:Twisted、Requests、Scrapy、Paramiko
关于运维是否需要会编程?
未来的必然趋势“运维自动化”
运维会开发后能做什么?
- 开发各种自动化工具,定制各种开源软件
- 评估和优化业务技术架构
- 开发公司的内部办公系统、CRM、网站等
- 什么都能做的的全栈工程师
Python是门什么样的语言?
编程语言的分类:
- 1.1 编译型:一次性把源程序生成可执行的机器码,再执行。
- 1.2 解释型:一边解释一边执行。(易移植)
编译型 解释型 混合型 C JavaScript Java C++ Python C# GO Ruby Swift PHP Object-C Perl Pascal Erlang
- 2.1 动态语言:在运行期间才去做数据类型检查。包括:Python、Ruby
- 2.2 静态语言:在编译期间就检查数据类型。包括:C/C++、C#、JAVA
- 3.1 强类型定义语言:强制数据类型定义的语言。一旦一个变量被指定了数据类型,如不强制转换,那么它永远是这个数据类型。(安全语言)
- 3.2 弱类型定义语言:数据类型可以被忽悠的语言。一个变量的数据类型可以赋不同的数据类型(非安全语言)
Python语言是解释型动态强类型定义语言。
python2.x是弱类型定义语言!!!
Python的优缺点
优点
- 1、易学,应为范围广泛。
- 2、开发效率非常高,强大的第三方库。
- 3、高级语言。
- 4、可移植性(避免使用依赖于系统的特性,几乎可以在市场上的所有的系统平台上运行)。
- 5、可扩展性(能c/c++等其它语言程序)。
- 6、可嵌入性(可把python嵌入C/C++程序,为用户提供脚本功能)。
缺点
- 1、速度慢。
- 2、代码不能加密,作为解释型语言,它的代码是以明文形式存储的。
- 3、线程不能利用多CPU。GIL即全局解释器锁,是程序设计语言解释器用于同步线程的工具,使任何时刻仅有一个线程在执行。Python的线程是操作系统的原生线程,liunx:pthread,windows:Win thread,完全由操作系统调度线程的执行。一个python解释器内有一条主线程和多条用户程序的执行线程。
Python解释器
- CPython 常用的解释器,官方提供。liunx系统默认使用。
- IPython 交互解释器,用In 【序号】:作提示符。
- PyPy 另一个Python解释器,执行速度快。
- Jython Java平台上Python的解释器
- IronPython .Net平台上的pythong解释器
注:CPython使用最广泛,如果在java或.Net平台上用python最好的办法是通过调用来交互,确保程序之间的独立性。
Python发展史
- Python2.x
- 过度版本Python2.6-2.7(2020年停止支持)
- Python3.x(不兼容Python2.x)
PYTHON 2 OR 3 选择
python2.x
- 已经是过去式,2020将不再提供相应的官网支持
- 是弱定义语言,不安全的语言
python3.x
- 现在正在使用,未来的希望。支持unicode、等新的语言规范
- 新的库更新将只在3.x中实现,不在支持2.x
- 是强定义语言,安全的程序语言
- python3.x不再向下兼容2.x
注:TWISTED 是不完全支持3.x,2017年了是否已经能支持?确认一下。
PYTHON 安装
- Windows下安装
- 下载安装包(3.6)http://www.python.org/downloads/
- 安装 默认安装路径:C:\Users\Administrator\AppData\Local\Programs\Python\Python36
- 配置环境变量(environment variables)
Python3.6安装更简单,有自动添加环境变量安装选项、下载标准库安装选项等,默认安装路径也有所改动。
- linux、Mac 1.系统原装python 2.如是2.x,更新至3.x
第一个Python程序“Hello World”
print(“Hello World!”)
在linux下创建一个文件hello.py并输入
pring("Hello Word!") 然后执行命令python hello.py,输出
指定解释器
要想类似执行shell脚本一样执行python脚本,就需要在文件头部指定解释器。如:
#!/usr/bin/emv python print("Hello World!") 这样就可以执行:./hello.py
注意:
- 执行前需要给予hello.py执行权限,chmod 755 hello.py
- #!/usr/bin/emv python(找环境变量中的默认的解释器)和#!/usr/bin/python(指定此解释器)声明的区别,强烈推荐使用#!/usr/bin/env python方式声明。
在交互器中执行
我们可以直接在python自带的交互器运行代码
在命令行模式下输入“python”就可以进入到python交互器,输入python代码即可直接执行。
变量
- 变量是用来存储程序过程中的结果,以备调用。
变量定义规则:
- 1、由字母、数字、下划线组成
- 2、第一个字符不能是数字
- 3、一下关键字不能声明为变量名: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
注:在程序中变量名使用有意义的英文单词,避免使用拼音、中文(Python3.x可以使用中文)
变量赋值
- name = "asdfa"
- name2 = name
- print(name,name2)
- name = "ffff"
- print("what is the value of name2 now?")
注:name2还是asdfa,name更新为ffff
字符编码
Python解释器在加载.py文件中的代码时,会对内容进行编码(默认是ASCII)。
- ASCII:是基于拉丁字母的电脑编码系统,主要用于下士现代英语和其它西欧语言,最多用8位(一个字节)表示。即:2**8=256-1,ASCII码只能表示255个符号。
- GB2312为中文字符集
GB2312(1980):117445个字符
GBK1.0(1995):21886个符号
GB18030(2000):27484个汉字
- Unicode
- UTF-8
2bytes所以字符统一都是这么2位
utf-8是变长的,其中: en-1byte,zh-3bytes
注:python3.x默认使用utf-8字符集,所以它是可以直接支持中文的;python2.0默认使用ASCII字符集,需要在代码内进行字符集的声明 -* -coding:utf-8 -*-
注释
- 当行注释:# 注释内容,可以注释单行。
- 多行注释:‘‘‘ 注释内容 ‘‘‘, 分别以三个引号开头和结尾作为多行注释。还可以作为一个多行的字符串赋值方式。
用户输入
#!/usr/bin/env python
—* — coding:utf-8 _* _
username=input("username:") password=input("password:") print(username,password)
输出如下格式:
------- info of $ -----
Name:
Age:
Job:
Salary:
方式1(不推荐使用):
#!/usr/bin/env python
name=input("username:")
age=input("Age:")
job=input("Job:")
salary=input("Salary:")
info = ‘‘‘
----------info of ‘‘‘+name+‘‘‘--------
Name:‘‘‘ +name +‘‘‘
Age:‘‘‘ +age+‘‘‘
Job:‘‘‘ +job+ ‘‘‘
Salary:‘‘‘ +salary
print(info)
方式2:
#!/usr/bin/env python
name=input("username:")
age=input("Age:")
job=input("Job:")
salary=input("Salary:")
info = ‘‘‘
----------info of %s --------
Name:%s
Age:%s
Job:%s
Salary:%s
‘‘‘%(name,name,age,job,salary)
print(info)
- %s 输出字符串;%d 输出整数;%f 输出浮点数。
方式3(推荐使用)
#!/usr/bin/env python
name=input("username:")
age=input("Age:")
job=input("Job:")
salary=input("Salary:")
info = ‘‘‘
----------info of {—name} --------
Name:{_name}
Age:{_age}
Job:{_job}
Salary:{_salary}
‘‘‘.format(_name=name, _age=age, _job=job, _salary=salary)
print(info)
方式4
#!/usr/bin/env python
name=input("username:")
age=input("Age:")
job=input("Job:")
salary=input("Salary:")
info = ‘‘‘
----------info of {0} --------
Name:{0}
Age:{1}
Job:{2}
Salary:{3}
‘‘‘.format(name,age,job,salary)
print(info)
密码密文输入(模块初识)
使用模块:import getpass
password=getpass.getpass("password:")
- 注:getpass在pytharm中使用有问题。
if else流程判断
#!/user/bin/env python
import getpass
_username=‘abc‘
_password=‘abc123
username=input("username:")
password=getpass.getpass("password:")
if _usernameusername and _passwordpassword:
print("Welcome user {name} login...".format(name=username))else:
print("Invalid username of password!")
- 注:python中下级代码必须缩进。
猜年龄
#!/user/bin/env python
age_of_old=38
guess_age=int(input("guess age:"))
if guess_age == age_of_old:
print("yes,you got it.")
elif guess_age > age_of_old:
print("think smaller...")
else:
print("think bigger!")
while 循环
可重复的猜年龄
#!/user/bin/env python
age_of_old=38
count = 0
while True:
if count == 3:
breakguess_age=int(input("guess age:"))
if guess_age == age_of_old:
print("yes,you got it.") breakelif guess_age > age_of_old:
print("think smaller...")else:
print("think bigger!")count +=1
优化后
#!/user/bin/env python
age_of_old=38
count = 0
while count <3:
guess_age=int(input("guess age:"))
if guess_age == age_of_old:
print("yes,you got it.") breakelif guess_age > age_of_old:
print("think smaller...")else:
print("think bigger!")count +=1
eles:
print("you have tried too many times..fuck off")
for循环
- for i in range(10): 相当于i在“0、1、2、3、4、5、6、7、8、9”中每次取一个值
- print("loop",i)
猜年龄程序用for循环
#!/user/bin/env python
age_of_old=38
for i in range(3):
guess_age=int(input("guess age:"))
if guess_age == age_of_old:
print("yes,you got it.") breakelif guess_age > age_of_old:
print("think smaller...")else:
print("think bigger!")eles:
print("you have tried too many times..fuck off")
- 注:for i in range(1,10,3)中“1”为数字组的开始值,“10”为数据结束值,“3”为步进(调整数组的值的数量)。
进一步完善的猜年龄游戏
#!/user/bin/env python
age_of_old=38
count=0
while count <3:
guess_age=int(input("guess age:"))
if guess_age == age_of_old:
print("yes,you got it.") breakelif guess_age > age_of_old:
print("think smaller...")else:
print("think bigger!")count +=1
if count == 3:
countine_confirm = input("do you want to keep guessing..?") if countine_confirm !="n": count=0eles:
print("you have tried too many times..fuck off")
- 注:continue 为跳出本次循环进入下一次循环,break为结束整个循环。
小测试:
for i in range(10):
print("--------",i)
if i > 5 and i<8:
continuefor j in range(10):
print(j)