python基础
一、python前言
1、什么是编程语言
编程语言是程序员与计算机之间沟通的介质。
2、编程语言的分类
机器语言:机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。
汇编语言:汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的,标识符更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。
高级语言:和汇编语言相比,它不但将许多相关的机器指令合成为单条指令并且去掉了与具体操作有关但与完成工作无关的细节。
注:高级语言按转换方式可将它们分为两类
解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(如python程序,先翻译/编译成字节码,然后由解释器解释执行,这个过程程序员都无需关心了,享受这种便利即可),一边执行
编译类:编译是指在程序执行之前,就将程序源代码“翻译”成机器指令,并保存成二进制文件
二、python简介
1、python的前世今生和应用领域
略
2、python解释器的种类
Cpython:最常用的版本,是使用c语言实现的使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
Jpython:Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。
IronPython:Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)
PyPy(特殊):Python实现的Python,将Python的字节码字节码再编译成机器码。
3、python的工作机制
编译型
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
解释型
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
注:java代码号称一次编译到处运行,因为java代理需要先编译成字节码(一种中间格式的代码),然后拿着字节码到处运行,每次运行都需要交给jvm去编译成机器指令后才能执行,因而java是混合型。
python不是混合型而是解释型。因为首先需要知道,只有在import导入py文件时,才会产生pyc字节码文件,该字节码文件是可以代替源文件而直接执行的,每次执行py文件,产生的字节码并不会保留下来,也就是说,每次执行py文件,都是要重新经历一遍:py文件->字节码-->python解释器-->机器码,每次都是一个重新解释执行的过程。
执行Python代码时,如果导入了其他的 .py 文件,那么执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。
代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。
三、python文件
1、文件的开头
#!/usr/bin/env python (调用环境变量,用python来执行该文件,也可以只写python的绝对路径来执行该文件)
# coding: utf-8 (文件字符集是tft-8,也可以设置成别的)
2、python执行脚本传入参数
Python有大量的模块,从而使得开发Python程序非常简洁,类库有包括三种:Python内部提供的模块;业内开源的模块;程序员自己开发的模块。
四、python中的变量
1、变量名的命名(标识符的命名)
变量名只能是 字母、数字或下划线的任意组合
变量名的第一个字符不能是数字
以下关键字不能声明为变量名['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']
2、变量的声明与调用
五、python简单的运算符
1、算数运算:
2、比较运算:
3、赋值运算:
3、位运算:
注: ~ 举例: ~5 = -6 解释: 将二进制数+1之后乘以-1,即~x = -(x+1),-(101 + 1) = -110
按位反转仅能用在数字前面。所以写成 3+~5 可以得到结果-3,写成3~5就出错了
六、流程控制
1、条件语句
单分支(略)
多分支
2、循环语句
while循环
基本循环
while 条件:
# 循环体
# 如果条件为真,那么循环体则执行
# 如果条件为假,那么循环体不执行
break
break用于退出本层循环
while True:
print ("123")
break
print ("456")
continue
continue用于退出本次循环,继续下一次循环
while True:
print ("123")
continue
print ("456")
tag
#!/usr/bin/env python
#_*_coding:utf-8_*_
# while True:
# username=input('username: ')
# password=input('password: ')
# if username == 'egon' and password == '123':
# while True:
# cmd=input('>>: ')
# if cmd == 'q':
# break
# print('------>%s' %cmd)
# break
tag=True
while tag:
username=input('username: ')
password=input('password: ')
if username == 'egon' and password == '123':
while tag:
cmd=input('>>: ')
if cmd == 'q':
tag=False
continue
print('------>%s' %cmd)
for循环
注:九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print('%s*%s=%s' %(i,j,i*j),end=' ')
print()
补充:
python3中统一都是input,python2中有raw_input等同于python3的input,另外python2中也有input
1.res=input("python3: ") 2.res=raw_input("python2: ") 3.res=raw_input("python2: ")
1,2无论接收何种输入,都被存为字符串赋值给res,而3的意思是,用户输入何种类型,就以何种类型赋值给res