吉多·范罗苏姆(Guido van Rossum)
编译型 解释型 动态类型 静态类型 强定义类型 弱定义类型
⑴作为初学python的科班出身的小白,python非常简单,非常适合人类阅读。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。
⑵易学。python虽然是用c语言写的,但是它摈弃了c中非常复杂的指针,简化了python的语法。
⑶Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。Python希望看到一个更加优秀的人创造并经常改进。
⑷可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC、Symbian以及Google基于linux开发的Android平台!
⑸在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。由于你只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python程序更加易于移植。
⑹Python既支持面向过程的函数编程也支持面向对象的抽象编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。
⑺ 可扩展性和可嵌入性。如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
⑻丰富的库。Python标准库确实很庞大。python有可定义的第三方库可以使用。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。
⑼ Python确实是一种十分精彩又强大的语言。它合理地结合了高性能与使得编写程序简单有趣的特色。
⑽规范的代码。Python采用强制缩进的方式使得代码具有极佳的可读性。
很多时候不能将程序连写成一行,如import sys;for i in sys.path:print i。而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件。(对很多用户而言这也不算是限制)
⑴运行速度,有速度要求的话,用C++改写关键部分吧。不过对于用户而言,机器上运行速度是可以忽略的。因为用户根本感觉不出来这种速度的差异。
⑵既是优点也是缺点,python的开源性是的Python语言不能加密,但是目前国内市场纯粹靠编写软件卖给客户的越来越少,网站和移动应用不需要给客户源代码,所以这个问题就是问题了。国随着时间的推移,很多国内软件公司,尤其是游戏公司,也开始规模使用他。
⑶ 构架选择太多
CPython
当 从Python官方网站下载并安装好Python2.7后,就直接获得了一个官方版本的解释器:Cpython,这个解释器是用C语言开发的,所以叫 CPython,在命名行下运行python,就是启动CPython解释器,CPython是使用最广的Python解释器。
IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的,好比很多国产浏览器虽然外观不同,但内核其实是调用了IE。
PyPy
PyPy是另一个Python解释器,它的目标是执行速度,PyPy采用JIT技术,对Python代码进行动态编译,所以可以显著提高Python代码的执行速度。
Jython
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
IronPython
IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
**单行注释
一个#
#print("")
**多行注释
三单引号
‘’‘print("")’’’
三双引号
"""print("")"""
作用:从外部获取值
用法:括号中可以提供提示信息
解释器环境运行
python -i (运行脚本的同时也将变量加载进来可以查看具体变量)
脚本运行
IDE
val_name = 初始值
关键词:
import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
类型测试 type()
type(val_name)
内存地址 id()
id(val_name)
常量
>>> a = 1,2,3
>>> a
(1, 2, 3)
>>> type(0a
File "" , line 1
type(0a
^
SyntaxError: invalid syntax
>>> type(a)
<class 'tuple'>
>>> x=1
>>> y=2
>>> z=x,y
>>> type(z)
<class 'tuple'>
>>>
互换两元素值
>>> x,y=y,x
>>> x
2
>>> y
1
>>>
函数 | 函数用途 |
---|---|
abs() | 绝对值 |
pow(x,y) | x的y次幂 |
round(x,[n]) | 四舍五入到x的n位有效数字 |
math.exp(1) | 返回e的x次幂 |
math.fabs() | 返回浮点数类型的绝对值 |
math.ceil(x) | 将x向上取整 |
math.floor(x) | 将x向下取整 |
math.log(x,[y]) | 单参数求以e为底x的对数,双参数求以y为底x的对数 |
math.modf(x) | 返回浮点数的小数部分和整数部分 |
math.sprt(s) | 求s的平方根 |
math包中的常见函数
dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
>>>
运算符 | 描述 | 实例 |
---|---|---|
+ | 相加 | a+b |
- | 相减 | a-b |
* | 相乘 | a*b |
/ | 相除 | a/b |
** | 幂运算 | a的b次幂 |
% | 取余 | a%b |
// | 整除求商 | a//b |
+= | 相加后赋值 | a+=3 |
-= | 相减后赋值 | a-=3 |
& | 按位 与 同为1为1否则为0 | 101&001 |
| | 按位或 有1就为1 | 2 |3 |
^ | 按位异或 不同为1相同为0 | 2^3 |
~ | 按位取反 | ~3 |
<< | 左移运算 | 2<<2 |
>> | 右移运算 | 16>>2 |
in | 若存在于指定序列中则返回true | a in b |
not in | 若不存在于指定序列中则返回true | a not in b |
is | 判断两个标识符是不是引用自同一个对象 | a is b |
not is | 判断两个标识符是不是引用自同一个对象 | a not is b |
a=divmod(28, 4)
print(a)
强转类型 | 描述 |
---|---|
int(x,[base]) | 将x强制转化为整形。如果是字符串,需要制定base基数 |
float(x) | 将x转换为浮点型 |
str(x) | 强转为字符串 |
repr() | 将对象转化为表达式字符串 |
list() | 转化为列表 |
tuple | 转化为元组 |
dict() | 转化为字典 |
set() | 转化为集合 |
chr() | 根据字符表吧整数转化为字符 |
ord() | 把字符转化为数值 |
bin() | 转化为二进制 |
oct() | 转化为八进制 |
hex() | 转化为十六进制 |
导入这个模块
import random
random模块的常见功能
1.random.random()
用来生成一个0-1的随机浮点数
import random
for i in range(100):
a=random.random()
print(a)
2.random.uniform(a,b)
用来生成a到b之间的随机浮点数
import random
for i in range(100):
a=random.uniform(1,3)
print(a)
3.random.randint(a,b)
用来生成a到b的随机整数
import random
for i in range(100):
a=random.randint(1,3)
print(a)
4.random.randrange([start],stop,[step])
start默认为1 step为步长默认为1,取递增数列中的随机一个
import random
for i in range(100):
a=random.randrange(1,16,2)
print(a)
5.random.choice(sequence)
从序列中随机获取一个元素,sequsence可以为列表,字符串或者元组
import random
li=["123",["asd"],["adsas"],["fgh"],["1234cds"]]
for i in range(100):
a=random.choice(li)
print(a)
6.random.shuffle(x[,random])
用来将一个列表的元素打乱。即将列表的元素随机排列
import random
li=["123",["asd"],["adsas"],["fgh"],["1234cds"]]
for i in range(6):
random.shuffle(li)
print(li)
7.random.sample(sequence,k)
用来从指定序列中随机获取指定长度的片段并随机排列。但,不会修改原来的序列。
import random
li=["123",["asd"],["adsas"],["fgh"],["1234cds"]]
for i in range(6):
a=random.sample(li,3)
print(a)