python基础
一、Python 是一门什么样的语言?
编程语言主要从以下几个角度为进行分类,编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言,每个分类代表什么意思呢,我们一起来看一下。
编译和解释的区别是什么?
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.
这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)
编译器:把程序全部编译完执行,
解释器:边编译边执行。python属于解释型语言
编译型vs解释型
编译型
优点:会有一次预编译,编译只做一次,运行时不需要再编译,效率高,可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。(移植障碍)
解释型
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
python是一门动态解释性的强类型定义语言。
二、Python的优缺点
优点
1.Python的定位是“优雅”、“明确”、“简单”
2.开发效率非常高
3.高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
4.可扩展性,如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
5.可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
6.可移植性
缺点
1.速度慢,解释型
2.代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的
3.线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。
三、Hello World程序
在linux 下创建一个文件叫hello.py,并输入
print("Hello World!")
然后执行命令:python hello.py ,输出
localhost:~ jieli$ vim hello.py localhost:~ jieli$ python hello.py Hello World!
四、变量\字符编码
变量用于存储要在计算机程序中引用和操作的信息。它们还提供了一种用描述性名称标记数据的方法,以便读者和我们自己能够更清楚地理解我们的程序。将变量看作包含信息的容器是有帮助的。它们的唯一目的是在内存中标记和存储数据。然后可以在整个程序中使用这些数据。
实际上,相当于门牌号,指向内存里的存放的数据。
声明变量
#_*_coding:utf-8_*_ name = "Dylan"
变量定义的规则:
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 以下关键字不能声明为变量名
['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']
变量的赋值
name = "Dylan"
name2 = name
print(name,name2)
name = "AZ"
print("What is the value of name2 now?")
赋值变量指示变化图解

五、用户输入
#name = raw_input("What is your name?") #only on python 2.x
name = input("What is your name?")
print("Hello " + name )
输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
import getpass
# 将用户输入的内容赋值给 name 变量
pwd = getpass.getpass("请输入密码:")
# 打印输入的内容
print(pwd)
六、 模块初识
sys
import sys print(sys.argv) #输出 $ python test.py helo world ['test.py', 'helo', 'world'] #把执行脚本时传递的参数获取到了
os
import os
os.system("df -h") #调用系统命令
结合
import os,sys
os.system(''.join(sys.argv[1:])) #把用户的输入的参数当作一条命令交给os.system来执行
自己写个模块
python tab补全模块
import sys
import readline
import rlcompleter
if sys.platform == 'darwin' and sys.version_info[0] == 2:
readline.parse_and_bind("bind ^I rl_complete")
else:
readline.parse_and_bind("tab: complete") # linux and python3 on mac
for mac
你会发现,上面自己写的tab.py模块只能在当前目录下导入,如果想在系统的何何一个地方都使用怎么办呢? 此时你就要把这个tab.py放到python全局环境变量目录里啦,基本一般都放在一个叫 Python/2.7/site-packages 目录下,这个目录在不同的OS里放的位置不一样,用 print(sys.path) 可以查看python环境变量列表。
七、数据类型初识
1、数字
int(整型)、long(长整型)、float(浮点型)、complex(复数)
"hello world"
name = "Dylan" print "i am %s " % name #输出: i am Dylan
PS: 字符串是 %s;整数 %d;浮点数%f
创建列表:
name_list = ['dylan', 'seven', 'eric'] 或 name_list = list(['dylan', 'seven', 'eric'])
ages = (11, 22, 33, 44, 55) 或 ages = tuple((11, 22, 33, 44, 55))
person = {"name": "mr.wu", 'age': 18}
或
person = dict({"name": "mr.wu", 'age': 18})
常用操作:
- 索引
- 新增
- 删除
- 键、值、键值对
- 循环
- 长度
八、数据运算
#!/usr/bin/python a = 60 # 60 = 0011 1100 b = 13 # 13 = 0000 1101 c = 0 c = a & b; # 12 = 0000 1100 print "Line 1 - Value of c is ", c c = a | b; # 61 = 0011 1101 print "Line 2 - Value of c is ", c c = a ^ b; # 49 = 0011 0001 #相同为0,不同为1 print "Line 3 - Value of c is ", c c = ~a; # -61 = 1100 0011 print "Line 4 - Value of c is ", c c = a << 2; # 240 = 1111 0000 print "Line 5 - Value of c is ", c c = a >> 2; # 15 = 0000 1111 print "Line 6 - Value of c is ", c
九、表达式if ... else
场景一、用户登陆验证
# 提示输入用户名和密码
# 验证用户名和密码
# 如果错误,则输出用户名或密码错误
# 如果成功,则输出 欢迎,XXX!
#!/usr/bin/env python
# -*- coding: encoding -*-
import getpass
name = raw_input('请输入用户名:')
pwd = getpass.getpass('请输入密码:')
if name == "dylan" and pwd == "cmd":
print("欢迎,daylan!")
else:
print("用户名和密码错误")
场景二、猜年龄游戏
在程序里设定好你的年龄,然后启动程序让用户猜测,用户输入后,根据他的输入提示用户输入的是否正确,如果错误,提示是猜大了还是小了
#!/usr/bin/env python
# -*- coding: utf-8 -*-
my_age = 28
user_input = int(input("input your guess num:"))
if user_input == my_age:
print("Congratulations, you got it !")
elif user_input < my_age:
print("Oops,think bigger!")
else:
print("think smaller!")
十、表达式for loop
循环10次
for i in range(10):
print("loop:", i )
continue:#跳出本次循环
for i in range(10):
if i<5:
continue #不往下走了,直接进入下一次loop
print("loop:", i )
break:#跳出整个循环
for i in range(10):
if i>5:
break #不往下走了,直接跳出整个loop
print("loop:", i )
十一、while loop
死循环,一直执行下去,不停歇。。。。
count = 0
while True:
print("你是风儿我是沙,缠缠绵绵到天涯...",count)
count +=1
回到上面for 循环的例子,如何实现让用户不断的猜年龄,但只给最多3次机会,再猜不对就退出程序。
#Author:Dylan
age_of_oldboy = 56
count=0
while count<3:
guess_age = int(input("guess age:"))
if guess_age == age_of_oldboy:
print("yes, you got it. ")
break
elif guess_age > age_of_oldboy:
print("think smaller...")
else:
print("think bigger!")
count +=1
else:
print("you have tried too many times...fuck off!")
如何让用户随意猜?
#Author:Dylan
age_of_oldboy = 56
count=0
while count<3:
guess_age = int(input("guess age:"))
if guess_age == age_of_oldboy:
print("yes, you got it. ")
break
elif guess_age > age_of_oldboy:
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
补充:三元运算
result = 值1 if 条件 else 值2
如果条件为真:result = 值1
如果条件为假:result = 值2

浙公网安备 33010602011771号