标签:字符串 中文 哈哈 support 系统运维 添加 编写 flag openstack
python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。
(龟叔:2005年加入谷歌至2012年,2013年加入Dropbox直到现在,依然掌握着Python发展的核心方向,被称为仁慈的独裁者)。
2017年7月的TIOBE排行榜,Python已经占据第四的位置, Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。
Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。
目前Python主要应用领域:
Python在一些公司的应用:
python发展史
编程语言主要从以下几个角度为进行分类,编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言,每个分类代表什么意思呢,我们一起来看一下。
2.1 编译型与解释型。
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.
这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)
编译型
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
解释型
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
2.2动态语言和静态语言
通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。
(1)动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。
(2)静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。
2.3强类型定义语言和弱类型定义语言
(1)强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。
(2)弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!
例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)。
通过上面这些介绍,我们可以得出,python是一门动态解释性的强类型定义语言。
先看优点
再看缺点:
当我们编写Python代码时,我们得到的是一个包含Python代码的以.py
为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py
文件。
由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器。
CPython
当我们从Python官方网站下载并安装好Python 3.6后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python
就是启动CPython解释器。
CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。
IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
CPython用>>>
作为提示符,而IPython用In [
序号
]:
作为提示符。
PyPy
PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
Jython
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
IronPython
IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
小结:
Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。
二,python环境
windows下安装Python(自动添加环境变量)以3,.5版本的举例:
1,官网下载:https://www.python.org/downloads/windows/
三 注释。
当行注释:# 被注释内容
多行注释:‘‘‘被注释内容‘‘‘,或者"""被注释内容"""
四 基础数据类型
int(整型)
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
>>> a= 2**64 >>> type(a) #type()是查看数据类型的方法 <type ‘long‘> >>> b = 2**60 >>> type(b) <type ‘int‘>
字符串类型(str)。
在Python中,加了引号的字符都被认为是字符串!
>>> course = ‘python‘ >>> print(course,type(course)) python <class ‘str‘> >>> age = ‘22‘ >>> print(age,type(age)) 22 <class ‘str‘> >>> age = 22 >>> print(age,type(22)) 22 <class ‘int‘> >>> country = "china" >>> print(country,type(country)) china <class ‘str‘> >>> info = ‘‘‘I study Python course‘‘‘ >>> print(info,type(info)) I study Python course <class ‘str‘>
多引号作用?作用就是多行字符串必须用多引号
>>> info = ‘‘‘ ... 志不坚者智不达 ... 越自律越自由 ... ‘‘‘ >>> print(info,type(info)) 志不坚者智不达 越自律越自由 <class ‘str‘>
字符串拼接
数字可以进行加减乘除等运算,字符串只能进行"相加"和及与数字"相乘"运算。
字符串的拼接只能是双方都是字符串,不能跟数字或其它类型拼接
>>> course = ‘python‘ >>> edition = ‘3.6‘ >>> course + edition ‘python3.6‘ >>> num = 2 >>> course * num ‘pythonpython‘
布尔值(True,False)。
布尔类型很简单,就两个值 ,一个True(真),一个False(假), 主要用记逻辑判断
我现在有2个值 , a=3, b=5 , 我说a>b你说成立么? 计算机怎么描述这是成立呢?用布尔类型
>>> a = 3 >>> b = 5 >>> a > b False >>> a < b True
五 格式化输出
现有一练习需求,打印成以下格式
----- info of course -----
course : python
hour : 8
----- end -----
需要把要打印的格式先准备好, 由于里面的 一些信息是需要用户输入的,因此可以先放置个占位符,再把字符串里的占位符与外部的变量做个映射关系
course = input("course:") hour = input("hour:") info = ‘‘‘ ----- info of %s ----- coure : %s #代表course hour : %s #代表hour ----- end ----- ‘‘‘%(course,course,hour) print(info)
%s就是代表字符串占位符,%d,是数字占位符
当本身需要%时,需要用%%转义
>>> msg = "我学%s,学习进度%s%%"%(‘python‘,20) >>> print(msg) 我学python,学习进度20%
六 基本运算符。
运算符
计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算
算数运算
以下假设变量:a=10,b=20
比较运算
以下假设变量:a=10,b=20
赋值运算
以下假设变量:a=10,b=20
逻辑运算
逻辑运算优先级
在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or,同一优先级从左往右计算。
判断标准:
x or y , x为真,值就是x,x为假,值是y
x and y, x为真,值是y,x为假,值是x
>>> print(3>4 or 4<3 and 1==1) False >>> print(1 < 2 and 3 < 4 or 1>2) True >>> print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1) True >>> print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8) False >>> print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) False >>> print(not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) False
o 为False
>>> print(8 or 4) 8 >>> print(0 and 3) 0 >>> print(0 or 4 and 3 or 7 or 9 and 6) 3
in,not in 判断子元素是否在原字符串(字典,列表,集合)中
>>> print(‘p‘ in ‘python‘) True >>> print(‘py‘ not in ‘python‘) False
七 流程控制
单分支
if 条件: 满足条件后要执行的代码
双分支
""" if 条件: 满足条件执行代码 else: if条件不满足就走这段 """ >>> num = 1 >>> if num == 1: ... print(‘条件满足‘) ... else: ... print(‘条件不满足‘) ... 条件满足
多分支
代码是从上到下依次判断,只要满足一个,就不会再往下走
if 条件: 满足条件执行代码 elif 条件: 上面的条件不满足就走这个 elif 条件: 上面的条件不满足就走这个 elif 条件: 上面的条件不满足就走这个 else: 上面所有的条件不满足就走这段 score = int(input("输入分数:")) if score > 100: print("Out of range") elif score >= 90: print("A") elif score >= 80: print("B") elif score >= 60: print("C") elif score >= 40: print("D") else: print("E")
while循环
while 条件: # 循环体 # 如果条件为真,那么循环体则执行 # 如果条件为假,那么循环体不执行
循环中止语句
1 改变条件终止循环
flag = True #标志位 count = 1 while flag: if count < 10 : print(count) count += 1 else: flag = False
2 break用于完全结束一个循环,跳出循环体执行循环后面的语句
count = 1 while True: count += 1 if count > 10: break else:print(count)
3 continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环
#使用while循环输入 1 2 3 4 5 6 8 9 10 count = 0 while count < 10: count += 1 if count == 7: continue else: print(count)
八 基础数据类型
1 数字int
#bit_length() 当十进制用二进制表示时,最少使用的位数 >>> num = 11 >>> data = num.bit_length() >>> print(data) 4
2 布尔值bool
布尔值就两种:True,False。就是反应条件的正确与否
3 字符串str
字符串的索引与切片
>>> #索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推 ... s = ‘abcdef‘ >>> print(s[1]) b >>> print(s[3]) d >>> #切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾腚) ... s = ‘abcdef‘ >>> print(s[0:3]) #切片 abc >>> print(s[0:]) #默认到最后 abcdef >>> print(s[-1]) #取最后一个 f >>> print(s[1:5:2]) #加入步长 bd >>> print(s[5:0:-2]) #反向加步长 fdb >>> print(s[::]) #取所有 abcdef
字符串常用方法
>>> s = ‘abc\t‘ >>> print(s.expandtabs()) #\t前面的补全 abc >>> s = ‘python VS java‘ >>> print(s.capitalize()) #首字母大写 Python vs java >>> print(s.swapcase()) #大小写翻转 PYTHON vs JAVA >>> print(s.title()) #每个单词的首字母大写 Python Vs Java >>> print(s.center(20,‘#‘)) #居中,不够长度空白处填充 ###python VS java### >>> print(s.count(‘a‘,12)) #字符串中元素出现的次数,可切片 1 >>> print(s.startswith(‘p‘)) #判断是否以...开头 True >>> print(s.endswith(‘n‘,0,5)) #判断是否以...结尾 可切片顾头不顾腚 False >>> print(s.find(‘on‘)) #寻找字符串中的元素是否存在,返回的找到的元素的索引,如果找不到返回-1 4 >>> print(s.index(‘on‘)) #返回的找到的元素的索引,找不到报错 4 >>> print(s.split()) #以什么分割,最终形成一个列表此列表不含有这个分割的元素 [‘python‘, ‘VS‘, ‘java‘] >>> print(s.split(‘a‘)) [‘python VS j‘, ‘v‘, ‘‘] >>> print(s.replace(‘java‘,‘php‘)) #替换 python VS php >>> >>> #去除两边指定字符串 ... s = ‘*python*‘ >>> print(s.strip(‘*‘)) #去除两边字符,默认去除空 python >>> print(s.lstrip(‘*‘)) python* >>> print(s.rstrip(‘*‘)) *python >>> >>> #is 系列 ... s = ‘python3‘ >>> print(s.isalnum()) #字符串由字母或数字组成 True >>> print(s.isalpha()) #字符串只由字母组成 False >>> print(s.isdigit()) #字符串只由数字组成 False >>> >>> #format 格式化输出 ... print(‘课程{},学时{}‘.format(‘python‘,8)) 课程python,学时8 >>> print(‘课程{0},学时{1}‘.format(‘python‘,8)) 课程python,学时8 >>> print(‘课程{course},学时{hour}‘.format(course=‘python‘,hour=8)) 课程python,学时8
标签:字符串 中文 哈哈 support 系统运维 添加 编写 flag openstack
原文地址:https://www.cnblogs.com/wangzihong/p/9471540.html