一、Python介绍
Python的创始人是吉多•范罗苏姆。1989年圣诞节期间为打发时间决心开发一个新的解释程序,作为ABC语言的一种继承。
Python的应用广泛及重要性不再多说,总之,人生苦短,我用Python!
Python是什么语言呢?
编程语言主要从以下几个角度进行分类,编译型和解释型,静态语言和动态语言,强类型语言和弱类型语言。
编译VS解释.png
编译型VS解释型
编译型
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据不同的操作系统环境编译不同的可执行文件。
解释型
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
动态语言和静态语言
通常我们说的动态语言、静态语言是指动态类型语言和静态类型语言。
动态类型语言:动态类型语言是指运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时在内部将数据类型记录下来。Python就是典型的动态类型语言。
静态类型语言:静态类型语言与动态类型语言刚好相反,他的数据类型实在编译期间检查的,也就是说在写程序时要声明所以变量的数据类型,C/C++是静态语言的典型代表。
强类型定义语言和弱类型定义语言
强类型定义语言:强制数据类型定义的语言,也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当做字符串处理,强类型定义语言是类型安全的语言。
弱类型定义语言:数据类型可以被忽略的语言,他与强类型定义语言相反,一个变量可以赋不同数据类类型的值。
强类型语言在速度上可能略逊于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。
通过上边的知识我们可以知道,Python是一门动态解释性的强类型定义语言。
Python的优缺点
优点:
1、Python的定位就是“优雅”、“明确”、“简单”。
2、三方库强大,开发效率高。
3、高级语言——无需考虑诸如如何管理你的程序使用的内存一类底层细节
4、可移植性
5、可扩展性——如需要某段关键代码运行更快或不公开,可把部分程序用C或C++编写,在Python程序中使用。
6、可嵌入性。
缺点
1、速度慢
2、代码不能加密
3、线程不能利用多CPU。GIL即全局解释器锁,是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。
注:开发工具使用PyCharm
二、输入输出
Python中输出使用'print()',在括号中可以写入想要输出的内容
print('Helllo , world')
Python中input()
函数可以让用户输入并存放到一个变量里
>>> name = input()
Michael
>>> name
'Michael'
注:
Python2.x中raw_input相当于Python3.x中的input
Python2.x中不要用input
那什么是变量?
三、变量
声明变量
name = "LZ"
上述代码声明了一个变量,变量名为:name ,变量name的值为:“LZ”
变量定义的规则:
•变量名只能是字母、数字、下划线的任意组合
•变量名的第一个字符不能为数字
•以下关键字不能声明为变量名
['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、age
如果单词较多可用下划线,如:name_of_dog
变量赋值
a = "ABC"
b = a
a = "XYZ"
print(b)
执行a=‘ABC’,解释器创建了字符串’ABC’和变量a,并把a指向’ABC’:
执行b=a,解释器创建了变量b,并把b指向a指向的字符串’ABC’:
执行’a=‘XYZ’’,解释器创建例如字符串’XYZ’,并把a的指向改为’XYZ’,但b并没有更改:
所以打印b变量是abc。
空值
空值是Python中一个特殊的值,用None
表示。None
不能理解为0,因为0是有意义的而None
是一个特殊的空值。
代码注释
当行注释用:#
多行注释用:’’’ ’’’
编码问题
Python2.x中如果有中文需要在文件开头
# -*- coding: utf-8 -*-
Python3.x中默认引入,所以直接就可表示中文
四、数据类型初识
数字
int(整型)
在32位机器上,整数的位数为32位,取值范围为-231~231-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-263~263-1,即-9223372036854775808~9223372036854775807
long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
float(浮点型)
浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
complex(复数)
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
注:Python中存在小数字池:-5 ~ 257
布尔值
一个布尔值只有True、False两种值,要么是True,要么是False。在Python中可以直接用True、False表示布尔值(注意大小写),也可以通过布尔运算and 、or、和not 计算出来。
布尔运算在计算机中用来做条件判断,根据计算结果为True或False,计算机可以自动执行不同的后续代码。
a = True
print a and 'a=T' or 'a=F’
输出结果是字符串’a=T’。
解释:Python把0、空字符串和None看成False,去他数值和非空字符串都看成True。
and 和 or 运算的一条重要法则:短路计算
- 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
- 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
字符串
字符串可以用单引号''或双引号”"括起来表示。如果字符串中含有 ‘ ,比如 I’m OK.我们用双引号括起来表示。类似的,如果字符串中有双引号,我们就用单引号括起来表示。
如果字符串中既包含双引号又包含单引号,就需要对字符串的某些字符进行“转义”,Python字符串用 \ 进行转义。
要表示字符串 Bob said "I'm OK”.
由于 ' 和 " 会引起歧义,因此,我们在它前面插入一个 \ 表示这是一个普通字符,不代表字符串的起始,因此,这个字符串又可以表示为 'Bob said "I'm OK\”.'
计算字符串的字符数用len()
函数
注意:转义字符 \ 不计入字符串的内容中。
常用转义符:\n换行 \t 制表符 \表示 \ 字符本身
PS: 字符串是 %s;整数 %d;浮点数%f
列表
Python内置的一种数据类型是列表list,list是一种有序的结合,可以随时添加和删除其中元素。
构造list很简单,直接用[ ]把list的所有元素都括起来就是一个list对象。
由于Python是动态语言,所以list中包含的元素并不要求都必须是同一数据类型。
L = ['Michael', 100, True]
一个元素都没有的list就是空list。empty_list = []
用len()
函数可以获得list元素的个数。
用索引来访问list中每一个位置的元素,索引是从0开始的。
>>> L[0]
'Michael'
>>> L[1]
100
索引可以使用负数,例如可以用L(-1)
来获得最后一个元素。
当索引超出范围时Python会报一个IndexError的错误。
list是一个可变的有序表,所以可以往list中追加元素到末尾:
>>> L.append('Adam')
>>> L
['Michael', 100, True, 'Adam']
删除末尾的元素:
>>> L.pop('Adam')
>>> L
['Michael', 100, True]
删除指定位置的元素:
>>> L.pop(1)
100
>>> L
['Michael', True]
替换某个元素:
>>> L(1)='haha'
>>> L
['Michael', 'haha']
list中元素也可以是list
s = ['python', 'java', ['asp', 'php'], 'scheme']
想获得'asp'可以用s[2][0]
获得。
元组
tuple是另一种有序列表,中文翻译为元组。tuple和list非常相似,但是tuple一旦创建完毕就不能修改了。
创建tuple和和创建list唯一不同之处就是用( )代替[ ].
tuple和list一样可以包含0个、1个和任意多个元素。
包含0个元素的tuple就是空tuple,t=()。
创建一个元素的tuple时,因为小括号既可以表示tuple又可以作为括号表示运算的优先级所以t=(1)被Python解释器计算结果是1而不是tuple。所以Python规定,单元素tuple要多加一个逗号这样就避免了歧义:t=(1,)
元组中的元素如果是列表,列表中元素是可变的。
字典
d={
'LZ':95,
'SY':86,
'HB':90
}
用花括号{}表示一个字典,冒号之前叫key,之后叫value.
字典是一个无序的集合。
可以根据key查找相应的value
>>>d['LZ']
95
如果key不存在就会报错,可以通过in
判断是否存在
>>>'haha' in d
False
还可以通过dict提供的get方法,如果key不存在可以返回None或自己指定value
>>> d.get('haha')
>>> d.get('haha', 100)
100
删除一个key用pop(key)
,对应的value也会删除
>>> d.pop('haha')
100
>>> d
{ 'LZ':95, 'SY':86,'HB':90}
注:key不能为可变对象
set
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合:
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
重复元素在set中自动被过滤:
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
通过add(key)
方法可以添加元素到set中,可以重复添加,但不会有效果:
>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.add(4)
>>> s
{1, 2, 3, 4}
通过remove(key)
方法可以删除元素:
>>> s.remove(4)
>>> s
{1, 2, 3}
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象。
格式化
name=input("name=")
age=input("age=")
job=input("job=")
info='''
--------info of %s--------
name:%s
age:%s
job:%s
'''%(name,name,age,job)
# print(info)
info2='''
---------info of {_name} ---------
name:{_name}
age:{_age}
job:{_job}
'''.format(
_name=name,
_age=age,
_job=job
)
# print(info2)
info3='''
---------info of {0}--------
name:{0}
age:{1}
job:{2}
'''.format(name,age,job)
print(info3)
%
运算符就是用来格式化字符串的,在字符串内部有几个%s
后边就对应几个变量或值,顺序要对应好。
常用的占位符:%d ---整数 %f---浮点数 %s---字符串 %x---十六进制整数
五、数据运算
算数运算
算数运算.png比较运算
比较运算逻辑运算
逻辑运算赋值运算
赋值运算成员运算
成员运算身份运算
身份运算位运算
位运算六、判断表达式 if ···elif···else···
#给定一个年龄
#让用户输入一个年龄,与给定的进行判断
ge_of_mine=15
guess_age= int (input("guess_age="))
if guess_age==age_of_mine:
print("yes,you got it")
elif guess_age>age_of_mine:
print("think smaller")
else:
print("think older")
七、循环
for循环
#简单的循环输出
for i in range(10):
print (i)
#从1开始,隔一个数打印一个,10以内
for i in range(1,10,2):
print(i)
While循环
count = 0
while True:
print(count)
count +=1
continue:跳出当前本次循环,进行下一次循环
break:直接跳出整个循环
八、循环及条件判断综合运用
#猜年龄,最多猜三次
age_of_mine=15
for i in range(3):
guess_age = int(input("guess_age="))
if guess_age == age_of_mine:
print("yes,you got it")
break
elif guess_age > age_of_mine:
print("think smaller")
else:
print("think older")
else:
print("you have tried too many times...fuck off")
网友评论