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

关于运维是否需要会编程?

未来的必然趋势“运维自动化”

http://3060674.blog.51cto.com/3050674/1598255

运维会开发后能做什么?

  • 开发各种自动化工具,定制各种开源软件

  • 评估和优化业务技术架构

  • 开发公司的内部办公系统、CRM、网站等

  • 什么都能做的的全栈工程师

Python是门什么样的语言?

编程语言的分类:

  • 1.1 编译型:一次性把源程序生成可执行的机器码,再执行。

  • 1.2 解释型:一边解释一边执行。(易移植)

编译型解释型混合型
CJavaScriptJava
C++PythonC#
GORuby
SwiftPHP
Object-CPerl
PascalErlang
  • 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

  1. 已经是过去式,2020将不再提供相应的官网支持

  2. 是弱定义语言,不安全的语言

python3.x

  1. 现在正在使用,未来的希望。支持unicode、等新的语言规范

  2. 新的库更新将只在3.x中实现,不在支持2.x

  3. 是强定义语言,安全的程序语言

  4. python3.x不再向下兼容2.x

注:TWISTED 是不完全支持3.x,2017年了是否已经能支持?确认一下。


PYTHON 安装
  • Windows下安装

  1. 下载安装包(3.6)http://www.python.org/downloads/

  2. 安装 默认安装路径:C:\Users\Administrator\AppData\Local\Programs\Python\Python36

  3. 配置环境变量(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个符号。 python学习一_编程

  • 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:

break

guess_age=int(input("guess age:"))

if guess_age == age_of_old:

print("yes,you got it.")

  break

elif 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.")

  break

elif 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.")

  break

elif 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.")

  break

elif 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=0

eles:

print("you have tried too many times..fuck off")

  • 注:continue 为跳出本次循环进入下一次循环,break为结束整个循环。

小测试:

for i in range(10):

print("--------",i)

if i > 5 and i<8:

continue

for j in range(10):

print(j)