Python简介
python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。Python的哲学就是简单优雅,尽量写容易看明白的代码,尽量写少的代码。
Python适合开发哪些类型的应用呢?
- 首选是网络应用,包括网站、后台服务等等;
- 其次是许多日常需要的小工具,包括系统管理员需要的脚本任务等等;
- 另外就是把其他语言开发的程序再包装起来,方便使用。
Python的优缺点
优点:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多.
缺点:运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。但是大量的应用程序不需要这么快的运行速度,因为用户根本感觉不出来。
Python的解释器种类
- Cpython
Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。 - Jyhton
Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。 - IronPython
Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似) - PyPy(特殊)
Python实现的Python,将Python的字节码再编译成机器码。 - RubyPython、Brython …
Python头部注释
如果想要像执行shell
脚本一样执行python脚本,例:./hello.py
,那么就需要在 hello.py
文件的头部指定解释器,#!/usr/bin/env python3
(env
是兼容unix
路径的),在linux
上其实不需要。如果不加,则需要指定解释器执行 python hello.py
。 python
解释器在加载 .py
文件中的代码时,会对内容进行编码(默认ascill
),ascii码无法表示中文,所以要用 # -*- coding: utf-8 -*-
来显式地告诉解释器,用什么编码来执行源代码。
注释
当行注释:# 被注释内容
多行注释:””” 被注释内容 “”” 或 ‘’’ 被注释内容 ‘’’
导入模块
Python有大量的模块,从而使得开发Python程序非常简洁。类库包括三类:
- Python内部提供的模块
- 业内开源的模块
- 程序员自己开发的模块
导入模块用 import
关键词,import
会找找到对应的.py
文件,并将文件内容导进来。比如说,有一个lib.py
文件,有一个test.py
文件
lib.py
的内容如下:
#!/usr/bind/env python3
# -*- coding: utf-8 -*-
print('lib')
test.py
的内容如下:
#!/usr/bind/env python3
# -*- coding: utf-8 -*-
import lib
print('test')
执行test.py
后,输出结果是 lib ,test
,先输出lib
,证明已经把lib.py
的内容导入了test.py
文件。
pyc文件
执行Python代码时,如果导入了其他的 .py
文件,那么,执行过程中会自动生成一个与其同名的 .pyc
文件,该文件就是Python解释器编译之后产生的字节码。
ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。
查看对象的类,或对象所具备的功能
- type()方法,显示类型
- dir()方法,显示类的各种功能
- help(type()),显示详细功能
流程控制和缩进
条件语句
user = input("please input name")
pwd = input("please input pwd")
if user == "fanda":
print("right")
elif pwd =="123":
print("error")
else :
print("other")
注意:input() ,用户输入的内容都是字符串,就算输入123,也会变成“123”
循环语句
import time
n = 1
while True:
print(n)
n +=1
if n >30:
break
time.sleep(1)
print("end")
上述代码当 n>30
时,会退出循环,break
用于退出所有循环。
while True:
print(123)
time.sleep(1)
continue
print(456)
time.sleep(1)
上述代码只会输出123
,continue
只会退出当前的循环,会继续下一次循环。
练习题
例子:使用while循环输出 1 2 3 4 5 6 8 9 10
n = 1
while n < 11:
if n==7:
n+=1
continue
print(n)
n+=1
注意 in==7
时,n+=1
,不然会一直返回7,下面的代码 执行不了
例子2:求1-100的所有数的和
n = 1
sum = 0
while n < 101:
sum+=n
n+=1
print(sum)
例子3:输出 1-100 内的所有奇数
n = 1
while n < 101:
if n % 2 != 0:
print(n)
n += 1
例子4:求1-2+3-4+5 … 99的所有数的和
n = 1
total = 0
while n < 100:
if n%2 ==0:
total-=n
else:
total+=n
n+=1
print(total)
例子5:用户登录(三次机会重试)
n =0
while n<3:
user = input("please input name")
if user == "fanda":
print("success")
break
n+=1
print("程序结束")