首页 > 代码库 > python基础(2)—— 基本概念

python基础(2)—— 基本概念


1.python第一个程序:Hello world!

    1.1简单的示例:

[root@willis python]# cat hello.py

print "hello world"

[root@willis python]# python hello.py

hello world

从第一行往下依次执行代码

    1.2示例二:以可执行文件运行

[root@willis python]# cat hello.py

#!/usr/bin/env python

print "hello world"

[root@willis python]# chmod +x hello.py

[root@willis python]# ./hello.py

hello world

    1.3输出中文:

[root@willis python]# cat hello.py

#!/usr/bin/env python

print "hello world"

print " 你好,世界!"

[root@willispython]# ./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

# 显式的指定编码:

[root@willis python]# cat hello.py

#!/usr/bin/env python

# coding=utf-8 # 显式指定编码为utf-8

print "hello world"

print " 你好,世界!"

[root@willis 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

() 可以提升运算符的优先级,某些情况为了程序的可读性也要有小括号

本文出自 “技术人生,简单不简单” 博客,请务必保留此出处http://willis.blog.51cto.com/11907152/1854702

python基础(2)—— 基本概念