作者:超哥
python 官方如下介绍 python:
Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程。
Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。
Python的作者,Guido von Rossum(吉多·范罗苏姆),荷兰人。1982年,Guido从阿姆斯特丹大学(University of Amsterdam)获得了数学和计算机硕士学位。然而,尽管他算得上是一位数学家,但他更加享受计算机带来的乐趣。用他的话说,尽管拥有数学和计算机双料资质,他总趋向于做计算机相关的工作,并热衷于做任何和编程相关的活儿。
Guido希望有一种语言,这种语言能够像C语言那样,能够全面调用计算机的功能接口,又可以像shell那样,可以轻松的编程。ABC语言让Guido看到希望。
ABC 语言尽管已经具备了良好的可读性和易用性,ABC语言最终没有流行起来。在当时,ABC语言编译器需要比较高配置的电脑才能运行。而这些电脑的使用者通常精通计算机,他们更多考虑程序的效率,而非它的学习难度。除了硬件上的困难外,ABC语言的设计也存在一些其他致命的问题:可拓展性差、不能直接进行IO、过度革新、传播困难
1989年,为了打发圣诞节假期,Guido开始写Python语言的编译/解释器。Python来自Guido所挚爱的电视剧Monty Python’s Flying Circus (BBC1960-1970年代播放的室内情景幽默剧,以当时的英国生活为素材)。他希望这个新的叫做Python的语言,能实现他的理念(一种C和shell之间,功能全面,易学易用,可拓展的语言)。Guido作为一个语言设计爱好者,已经有过设计语言的(不很成功)的尝试。
最初的Python完全由Guido本人开发。Python得到Guido同事的欢迎。他们迅速的反馈使用意见,并参与到Python的改进。Guido和一些同事构成Python的核心团队。他们将自己大部分的业余时间用于hack Python。随后,Python拓展到研究所之外。Python将许多机器层面上的细节隐藏,交给编译器处理,并凸显出逻辑层面的编程思考。Python程序员可以花更多的时间用于思考程序的逻辑,而不是具体的实现细节。这一特征吸引了广大的程序员。Python开始流行。
参考
python
的http
库有很多,比如常见的httplib
,urllib2
,requests
等, 都很好的封装了http
协议中的post,get
等方法,也很方便的能够模拟浏览器去实现自己想要的功能,并且,对网页的解析也有诸多工具可以使用,如beautifulsoup
等。python
在科学计算领域也应用越来越广,如物理学领域,各种实验数据的处理以及相关实验模拟等,机器学习领域也产生了诸多的开源库,如sklearn
,里面集成了机器学习领域常见的算法,接口良好,文档丰富,也有最近十分火热的Deep Learning
的开源库,如theano
。 python 几乎支持在所有的操作系统上搭建开发环境。
linux 系统一般默认会安装了 python2.x 的版本。如果需要安装 python3.x的版本,需要自行安装。
sudo apt-get install python3
安装成功之后在终端输入:python3
测试是否安装成功
macOS默认也安装了 python2.x 版本。使用 homebrew 安装最新版本(首先你应该安装了 homewbrew)
brew install python3
安装成功之后在终端输入:python3
测试是否安装成功。
有3种办法运行 python
代码:
使用 python 交互式解析器(Python Interpreter)
直接运行 python 代码
使用 python(window)或 python3(mac/linux)运行 .py
文件。
Hello.py 文件种的内容
在终端,把当前目录切换到Hello.py
所在的目录,然后输入python3 Hello.py
使用 IDE(例如:pycharm) 直接运行 .py
文件。
总结:
.py
用在小型项目问题不大,但是大型项目对文件的管理就比较差。而且一般的文本编辑器代码联想和提示功能都比较弱或者没有。python 不使用 {}
来组织代码,完全依靠缩进,所以缩进的格式非常重要。
使用4个空格来缩进,不要使用 tab
,更不能 tab
和 空格混用。
使用空格的时候永远使用4个空格,不能使用其他数量的空格,否则语法错误。
建议把开发工具的tab
改成4个空格。
sublime 用如下方式设置:另外pycharm
默认已经用4个空格替换tab
python
不严格要求使用分号( ;
)。
理论上应该每行放一句代码。每行代码之后可以添加 分号;
也可以不添加 分号;
尽量不要多句代码放在一行,如果放在一行,则需要添加分号把他们隔开。
使用有意义的,英文单词或词组,绝对不要使用汉语拼音
package/module 名中不要出现 -
python 大小写敏感。 a 和 A 是完全不同的。
各种类型的命名规范:
Type | Public | Internal |
---|---|---|
Modules | lower_with_under |
_lower_with_under |
Packages | lower_with_under |
|
Classes | CapWords |
_CapWords |
Exceptions | CapWords |
|
Functions | lower_with_under() |
_lower_with_under() |
Global/Class Constants | CAPS_WITH_UNDER |
_CAPS_WITH_UNDER |
Global/Class Variables | lower_with_under |
_lower_with_under |
Instance Variables | lower_with_under |
_lower_with_under (protected) or __lower_with_under (private) |
Method Names | lower_with_under() |
_lower_with_under() (protected) or __lower_with_under() (private) |
Function/Method Parameters | lower_with_under |
|
Local Variables | llower_with_under |
变量的概念和在数学中的变量的概念一样的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。
在 python 中变量的声明与其他语言有显著的差别。
在 python 中,使用变量一定要先给变量赋值,不需要专门去声明。如果是第一次赋值则会在内存中创建一个对象,如果不是第一次则会使用已经创建过的。
a = 10 # 第一次使用 a,所以会自动创建变量a,并把它的赋值为10
print(a) # 10
a = 20 # 第二次使用 a, 所以不会再创建变量 a,而是使用前面创建的变量 a,然后赋值为20
print(a) # 20
如果是其他语言比如 java 中,则需要先声明变量,然后赋值。
int a = 10; //Java 中的声明变量和赋值
所以,python 中各种代码相比其他语言就是精简和优雅 爽
python 的同一个变量,可以先存储数字,然后也可以再更改为其他类型。这是弱类型语言的典型特征。
a = 10 # 赋值为数字
print(a)
a = 'abc你好' #赋值为字符串
print(a)
合法:abc
、a1
、_hello
、my_girl
不合法:1a
、$a
虽然 python
的变量使用起来非常简单,但是理解变量的内存模型也是非常重要的。
看下面的代码:
a = "abc"
print(a)
b = a
a = "xyz"
print(a) # abc
print(b) # xyz
第1行代码做了3件事情:
"abc"
a
"abc"
在内存中的地址赋值给变量 a
。即可以理解为变量 a
指向了字符串 "abc"
第3行代码做了2件事情:
b
a
的值赋给变量 b
。因为 a
中是存储的字符串 "abc"
的内存地址,则变量 b
存储的也是字符串 "abc"
的内存地址。即变量 b
也指向了字符串 "abc"
第5行代码做了2件事情:
"xyz"
"xyz"
在内存中的地址赋值给变量 b
。则 b
中的值被更换为字符串 "xyz"
的内存地址, b
与 字符串 "abc"
则再无关系。 计算机要处理的数据各种各样,每种数据的类型是不一样的,比如有的是数字,有的是字符串等。所以 python 把数据分成了多种类型。
但是有一点要注意:由于 python 是弱类型语言,变量存储的值的类型并不固定。所以 不应该说变量的类型,而应该说变量的值的类型。
一个字面常量(Literal Constants) 的例子是诸如5
、1.23
这样的数字或 你好
、abc
这样的文本。
这么称呼这一变量是因为它们是 字面上的 –你用的就是它字面意义上的值或是内容。数 字 2
总是表示它本身而非其他含义–它是一个 常量,因为它的值不能被改变。
因此,所有的这些都被称作字面常量。
python 可以精确的处理任意长度的整数(也包括负整数)。
a = 200000000000000000000000000000000000000000000000000000
print(a)
在计算机中经常用到2进制
、8进制
、10进制
、16进制
类型的数据,python也支持这样的字面量数据。
a = 100 # 十进制的100.
print(a)
b = 0b100 # 用 0b 开头表示二进制数据
print(b)
c = 0o100 # 用 0o 开头表示八进制数据
print(c)
d = 0x100 # 用 0x 开头表示十六进制的数据
print(d)
输出结果总是使用10进制形式:
100
4
64
256
计算机中的浮点数就是我们数学中的小数。
浮点数可以用数学写法,如1.23
,3.14
,-9.01
,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109
就是1.23e9
,或者12.3e8
,0.000012
可以写成1.2e-5
等等。
注意:
整数和浮点数在计算机中的存储方式是不一样的。整数永远可以精确的表示,而大部分的浮点数是近似表示。
在 python 中,用 一对双引号 ""
或 一对单引号 ''
括起来的单个或多个字符就是字符串 。
有些字符没有办法直接写在 单引号或者双引号中,比如回车、换行、制表符等。这时候需要借助转义字符来。
\
是转义字符。(几乎在所有的编程语言中都是它)
转义字符串 | 含义 |
---|---|
\n | 换行 |
\’ | 单引号 |
\” | 双引号 |
\ | \ |
\t | 制表符 |
\r | 回车 |
\b | 退格(back) |
如果不想让字符串中的转义字符起作用,则可以在字符串前面添加 r
来表示
a = r'abc\nx\tyz'
print(a)
print("------")
b = 'abc\nx\tyz'
print(b)
如果一个字符串内有多行数据,又不想写过多的 \n
则可以使用 3 对单引号或双引号来表示。
a = '''hello
world
哈哈哈哈'''
print(a)
b = """hello
world
哈哈哈哈
"""
print(b)
在 python 中的字符串是不可变的。
这意味着一旦你创造了一串字符串,你就不能再改变它。尽管这看起来像是一件坏事,但实 际上并非如此。
布尔值表示一种逻辑值。在 python
中只有 2 个字面量布尔值 True
和 False
。
可以使用字面量布尔值,也可以通过一定的计算得到布尔值。
a = True
b = False
c = 3 > 4
print(a)
print(b)
print(c)