本章内容
- Python介绍及发展历史
- Python特点
- 安装
- Hello World程序
- 变量/字符编码
- 用户输入
- .pyc是个什么?
- 数据类型初识
- 数据运算
- 条件判断表达式if..else..
- 循环表达式for和while
- break and continue
- 作业需求
一、python介绍及发展历史
个人理解:python是门计算机语言,跟C、C++、Java等一样,为什么和英语、法语一样称为语言?语言有自己的共性,就像我们婴儿时期咿呀咿呀学说话,读书时代的拼音、单词、组词、语法、造句、写作,从简单到复杂,从词到造句到写作,这就是学语言的原理。python也是如此,尽管本人还不能一窥全貌。
个人方法:先模仿再创造,先死记再变通,运用5W1H(when、where、who、what、why、how)去学习,多思考。
博客目标:只提取有用的东西,逻辑清晰明了,语言简练实用。
废话少说,接下来先做python介绍:
where:
- 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬虫、Google广告等项目都在大量使用Python开发
- CIA: 美国中情局网站就是用Python开发的
- NASA: 美国航天局(NASA)大量使用Python进行数据分析和运算
- YouTube:世界上最大的视频网站YouTube就是用Python开发的
- Dropbox:美国最大的在线云存储网站,全部用Python实现,每天网站处理10亿个文件的上传和下载
- Instagram:美国最大的图片分享社交网站,每天超过3千万张照片被分享,全部用python开发
- Facebook:大量的基础库均通过Python实现的
- Redhat: 世界上最流行的Linux发行版本中的yum包管理工具就是用python开发的
- 豆瓣: 公司几乎所有的业务均是通过Python开发的
- 知乎: 国内最大的问答社区,通过Python开发(国外Quora)
- 春雨医生:国内知名的在线医疗网站是用Python开发的
- 除上面之外,还有搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝 、土豆、新浪、果壳等公司都在使用Python完成各种各样的任务。
python擅长的领域:
Web开发--Django/pyramid/Tornado/bottle/Flask/WebPy
网络编程--Twisted/Requests/Scrapy/Paramiko
科学运算--SciPy/Pandas/IPython
GUI图形开发--wxPython/PyQT/Kivy
运维自动化--OpenStack/SaltStack/Ansible/腾讯蓝鲸(LOL)
how:
如何高效的适应业务的频繁更新、变更、上线、扩展?
如何在最低成本的前提下实现业务并发能力的可伸缩式扩展?
如何实现运维人员从被动故障处理到故障预防和故障高度自愈的转换?
如果通过不断优化运维流程、自动化工具来降低运维成本、人工参与度,最终实现无人运维?
what:
python是一门动态解释性的强类型定义语言。
从不同角度去看编程语言的类型:编译型和解释型、动态语言和静态语言、强类型语言和弱类型语言。
1.执行角度:
编译型--一个程序对源代码进行转换,生成可执行文件(机器代码),就可以直接运行了,但大型项目多个文件时就需要全部编译完才能运行;如C、C++等
解释型--就像看书,看一句读一句,即不停的解释执行,解释执行。因此解释型比编译型执行效率要慢。
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.
应用场景:
编译型--用在像开发操作系统、大型应用程序、数据库等C、C++、Pascal等
解释型--用在网页脚本、服务器脚本及辅助开发接口,对速度要求不高、兼容性好,如java、javaScript、VB、Perl、Python等。解释型语言更容易移植,像java一次编译到处运行。
2.语言动静
动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。
静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。
3.语言强弱
强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。
弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
二、python特点
优点:
1.Python的定位是“优雅”、“明确”、“简单”;
2.开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,避免重复造轮子;
3.高级语言:不考虑程序内存处理等底层细节;
4.可移植性:所有Python程序无需修改,就几乎可以在市场上所有的系统平台上运行;
5.可扩展性:关键代码可使用C/C++编写,使得python程序运行更快;
6.可嵌入性:python嵌入到C/C++中,提供脚本功能;
缺点:
1.速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,基本满足程序速度要求,除非搜索引擎等需要C编写;
2.代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的;
3.线程不能利用多CPU问题,由于GIL即全局解释器锁(Global Interpreter Lock)存在,禁止多线程并行执行;
python解释器
CPython:C语言开发,应用最广泛
IPython:CPython的增强型交互式解释器
PyPy:目标是执行速度,动态编译python代码,与CPython解释器下执行结果可能略有不同
Jython:Java平台的解释器
IronPython:微软.Net平台上的解释器
三、安装
环境变量:
【右键计算机】
-
-
》【属性】
-
-
》【高级系统设置】
-
-
》【高级】
-
-
》【环境变量】
-
-
》【在第二个内容框中找到 变量名为Path 的一行,双击】
-
-
> 【Python安装目录追加到变值值中,用 ; 分割】
如:原来的值;C:python27,切记前面有分号
四、hello world程序
C:UsersHW>python
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AM
D64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello World!")
Hello World!
五、变量/字符编码
变量声明:
#_*_ coding:utf-8 _*_ #指定程序文件编码类型为utf-8
name = "Alex" #变量名为:name,变量name的值为:"Alex"
变量定义的规则:
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 以下关键字不能声明为变量名
['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:python2默认是ASCII编码,1个字节,最多2**8-1=255个字符,其中0-9为48-57,A-Z为65-90,a-z为97-122;
中文编码:
- GB2312:简体中文,7445个符号;
- GBK:21886个符号,其中收录了21886个汉字,有的windows版本支持;
- GB18030:收录了27484个汉字
Unicode(统一码、万国码、单一码):最少2个字节,即:2 **16 = 65536
注释:
当行注视:# 被注释内容
多行注释:""" 被注释内容 """
六、用户输入函数
代码:
# !/usr/bin/env python
# _*_coding:utf-8_*_
# name = raw_input("What is your name?") #only on python 2.x
name = input("What is your name?")
print("Hello " + name)
执行结果:
What is your name?alex
Hello alex
七、.pyc是什么
当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject(Python编译器真正编译成的结果)中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。
当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。
八、数据类型初识
1.数字
int(整型):范围是32位系统为-2**31~2**31-1,64位系统为-2**63~2**63-1
long(长整型):整型范围溢出,就会变成long
float(浮点型):小数就是浮点数
complex(复数):复数由实数部分和虚数部分组成,一般形式为x+yj
2.布尔值
3.字符串
如上例,"+":代表拼接,意思是在内存中重新开辟一块新空间存储新字符串,所以推荐
字符串的格式化输出
name = "alex"
print("i am %s" % name)
结果:i am alex
注意:字符串是 %s;整数 %d;浮点数%f
4.列表
创建列表:
name_list
=
[
'alex'
,
'seven'
,
'eric'
]
或
name_list =
list
([
'alex'
,
'seven'
,
'eric'
])
基本操作:
- 索引
- 切片
- 追加
- 删除
- 长度
- 切片
- 循环
- 包含
5.元组(不可变列表)
创建元组:
ages
=
(
11
,
22
,
33
,
44
,
55
)
或
ages
=
tuple
((
11
,
22
,
33
,
44
,
55
))
6.字典(无序)
创建字典:
person
=
{
"name"
:
"mr.wu"
,
'age'
:
18
}
或
person
=
dict
({
"name"
:
"mr.wu"
,
'age'
:
18
})
常用操作:
- 索引
- 新增
- 删除
- 键、值、键值对
- 循环
- 长度
九、数据运算
c = a & b
c = a | b
c = a ^ b
c = ~a
c = a << 2
c = a >> 2
十、条件判断表达式if..else..
场景一、用户登陆验证
模拟登陆:
1. 用户输入帐号密码进行登陆
2. 用户信息保存在文件内
3. 用户密码输入错误三次后锁定用户
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import getpass
#用户名和密码
user = "admin"
passwd = "123456"
username = input("请输入用户名:")
#password = input("请输入密码:") #明文输入
password = getpass.getpass("请输入密码:") #密文输入
if username == user and password == passwd: #判断,如果两个都为真,则执行成功语句
print("登录成功!")
else: #如果至少一个为假,则执行失败语句
print("登录失败...")
十一、循环表达式for和while
例子1:循环10次
for i in range(10):
print(i)
结果:
0
1
2
3
4
5
6
7
8
9
例子2:打印5及以上的循环
for i in range(10):
if i < 5:
continue
print("loop",i)
loop 5
loop 6
loop 7
loop 8
loop 9
例子3:打印小于等于5的循环
for i in range(10):
if i > 5:
break
print("loop",i)
loop 1
loop 2
loop 3
loop 4
loop 5
---------------------------------------------------
例子4:循环100次,while True为死循环
count = 0
while True:
print("你是风儿我是沙,缠缠绵绵到天涯...",count)
count +=1
if count == 100:
print("去你妈的风和沙,你们这些脱了裤子是人,穿上裤子是鬼的臭男人..")
break
例子5:循环100次,while True为死循环#!/usr/bin/env python
# -*- coding: utf-8 -*-
my_age
=
28
count
=
0
while
count <
3
:
user_input
=
int
(
input
(
"input your guess num:"
))
if
user_input
=
=
my_age:
print
(
"Congratulations, you got it !"
)
break
elif
user_input < my_age:
print
(
"Oops,think bigger!"
)
else
:
print
(
"think smaller!"
)
count
+
=
1
#每次loop 计数器+1
else
:
print
(
"猜这么多次都不对,你个笨蛋."
)
十二、break and continue
如上例,
break:直接跳出整个循环
continue:不执行接下来的语句,进入下次loop循环
十三、作业需求
作业一:博客
作业二:编写登陆接口
- 输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后锁定
- 三级菜单
- 可依次选择进入各子菜单
- 所需新知识点:列表、字典