1.python第一个程序:Hello world!
1.1简单的示例:
[[email protected] python]# cat hello.py
print "hello world"
[[email protected] python]# python hello.py
hello world
从第一行往下依次执行代码
1.2示例二:以可执行文件运行
[[email protected] python]# cat hello.py
#!/usr/bin/env python
print "hello world"
[[email protected] python]# chmod +x hello.py
[[email protected] python]# ./hello.py
hello world
1.3输出中文:
[[email protected] python]# cat hello.py
#!/usr/bin/env python
print "hello world"
print " 你好,世界!"
[[email protected]]# ./hello.py
File "./hello.py", line 4
SyntaxError: Non-ASCII character ‘\xe4‘ in file ./hello.py on line 4, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
# 显式的指定编码:
[[email protected] python]# cat hello.py
#!/usr/bin/env python
# coding=utf-8 # 显式指定编码为utf-8
print "hello world"
print " 你好,世界!"
[[email protected] python]# ./hello.py
hello world
你好,世界!
1.4关于脚本中的第一行内容:
#!/usr/bin/python 这种写法表示直接引用系统的默认的Python版本,这样的话python程序移植到其他机器上可能运行的时候有问题,因为别人系统默认的Python版本与你预期的并不一致。
#!/usr/bin/env python 这种写法表示,引用环境变量里面自定义的Python版本,具有较强的可移植性,推荐这种写法。
2.python 工作模式
交互模式:所有数据都在内存中,数据无法保存。
文本模式:便于修改,推荐。
3.字面常量
单独出现的数字,字符串等
1,"abc",[‘a‘,1]
字面常量是解释器里面的一块内存
单独的字面常量是无意义的, 当一块内存没有变量在引用的时候会被自动释放。
4.变量
变量是一个指向一段内存的符号
python 里所有的变量都是引用,
变量命名规范(由数字,字母,下划线组成, 不能以数字开头, 关键字不能作为变量名)
4.1变量的命名:
变量名有字母、数字、下划线组成
数字不能开头
不可以用关键字 比如 python
a a1 a_1 _a
4.2变量的赋值:
是变量的声明和定义的过程
a = 1 a 为标签 1 为内存中存储的值
id(a) 查看 a 标签在内存中地址
4.3变量重新赋值
In [1]: i=1
In [2]: id(i)
Out[2]: 36519016
In [3]: i=3
In [4]: id(i)
Out[4]: 36518968
4.4 .123 和 456 存在于不同的内存空间,在重新赋值的时候是把标签移了一个位置,这与 c 语言相反。
In [5]: a=123
In [6]: id(a)
Out[6]: 36522064
In [7]: b=123
In [8]: id(b)
Out[8]: 36522064
同样的内存地址空间可以有多个不同的标签
5.数据类型
python是一种强类型的动态语言,每一个数据都有一个类型,不同类型之间的数据不能做运算,如数字和字符不能相加.所谓的动态语言是指,数据类型可以在运算时改变.
>>> v1 = 1
>>> type(v1)
<type ‘int‘>
>>> v1 = "string"
>>> type(v1)
<type ‘str‘>
# 在C 中是绝对不能这么做的
# 不同类型的数据不能做运算
>>> v1 = "string"
>>> type(v1)
<type ‘str‘>
>>> v2 = 1
>>> v1+v2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot concatenate ‘str‘ and ‘int‘ objects
数据类型,不同的数据类型的二进制是不一样的,为了能让解释器知道这段内存是什么,所以要定义数据类型,也就是规范了数据存放的二进制格式。
在python中分为数字类型和字符串类型,数字又分为:整型,长整型和浮点型.还有不常用类型虚数类型
>> a = 1.1
>>> type(a)
<type ‘float‘>
# 字符串连接
>>> s1 = ‘hello‘
>>> s2 = ‘ world‘
>>> s = s1 + s2
>>> s
‘hello world‘
类型转化,float要比int精度要高,从低精度向高精度转换是没有数据损失的,从高精度转向低精度会有损失。
>>> a=3
>>> type(a)
<type ‘int‘>
>>> a=float(3)
>>> type(a)
<type ‘float‘>
>>> a=str(3)
>>> type(a)
<type ‘str‘>
6.运算符与表达式
算术运算符 + * / ** // %
位操作运算符<< >> & | ^ ~
比较运算符 < <= >= == > !=
逻辑运算符 and or not
赋值运算符 = += -= *= /=
其他运算符
6.1 数学运算符,
>>> 10 /3 # 两个整型相除的时候,等到的还是整型, 会有精度损失
3
# 将其中一个转换为float, 会等到一个float 型
>>> 10 /float(3)
3.3333333333333335
# 幂运算
>>> 2**101024
# 除法取整
>>> 10 // 3.0
3.0 # 只取整部分
# 取模运
>>> 10 % 3
1
6.2 位运算符:
>>> 2 << 3 #2 左移3 位,(10 --->10 000)
16
# 位运算速度比较快
# 按位与 &
>>> 3 & 2
2
# 安位或 |
>>> 3 | 2
3
# 异或, 两个位置相同取1 ,不同则取0
>>> 3 ^ 2
1
比较运算符,与其他语言都相同
逻辑运算符,与其他语言类似,只是写法不同
赋值运算符,与其他语言相同 a = 1 ,想a符号指向该数据存在的内存
6.3表达式
由运算符,连接起来的变量或者常量,构成表达式,如 a = 1和 c = a1 + b2
6.4表达式优先级
单目运算符高于双目运算符,not例外; 单目运算符,只有一个数的运算符,如正负号,按位取反,not .python里没有三目运算符
算数运算符高于位运算符:
位运算符高于比较运算符
比较运算符高于逻辑运算符
赋值运算符优先级最低
>>> 1 + 2 << 2
12
>>> 3 << 2
12
# 先加再移位
# 位运算符高于比较运算符
>>> 2 << 2 < 6
False
() 可以提升运算符的优先级,某些情况为了程序的可读性也要有小括号