home

Love life, love sports, love to learn, & love...

Blog

Thought,  done  &  record.

订阅到QQ邮箱 google reader google reader

Python 学习笔记

简单的“Hello world”程序

有两种方法可以运行 python 程序:python 解析器(或称 python 运行环境)中交互运行和源文件运行

python 解析器中交互运行

打开终端,输入 python3 命令打开 python 解析器,将出现提示符 >>>

输入 print('Hello world') 语句,然后回车,将看到 Hello word 输出字样。下面是在 linux 环境下的运行结果:

>>> python3
Python 3.2.3 (default, Dec 18 2012, 16:23:22) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print('Hello world')
Hello world
>>> 

退出 python 解析器的方法是:在 linux 系统中按下 Ctrl-d 或者输入 exit() (不要忘了后面的一对括号)并回车就可退出;在 Windows 系统下,按下 Ctrl-z 并回车即可。

源文件运行

打开文本编辑器,新建一名为 hello.py 的源文件(后缀 .py 无关紧要)并输入以下文本:

print('Hello World')

打开终端并进入源文件所在的目录,然后输入 python3 hello.py 命令即得到“Hello World”字样输出,运行结果如下:

>>> python3 hello.py 
Hello World

可执行的 python 程序

hello.py 文件的第一行加入以下文本内容(被称为 hashbang):

#!/usr/bin/env python3

所以现在的 hello.py 文件内容如下:

#!/usr/bin/env python3
print('Hello World')

然后赋予此文件具有可执行权限:

$ chmod a+x hello.py

然后就可以直接在终端中运行源文件了:

$ ./hello.py
Hello World

上面的命令必须在源文件所在的目录内才能成功运行,所以使用了 ./,要想在任意目录中运行此源文件,需要先将包含源文件的目录添加到 PATH 变量中。比如源文件所在目录为 /home/user01/bin,则强其添加到 PATH 变量中:

$ export PATH=$PATH:/home/user01/bin

之后就可以在终端中直接输入 hello.py 来运行 python 程序了。

基本知识

注释信息

Python 中的注释信息提示符为井号 #,任何位于 # 右边的信息都被认为为注释信息。例如:

print(‚Hello World‚) # Note that print is a function
# Note that print is a function
print(‚Hello World‚)

常量(或称字面常量 Literal Constants)

常量的值无法改变,有数字常量,比如 5、3.14 等;字符串常量,例如 ’This is a string’、"It’s a string!" 等。

数字(Numbers)

数字又分为两种类型——整型和浮点型。

整型没有小数点,例如 2、100 等,而浮点型有小数点,例如 3.14、52.3E-4,其中 52.3E-4 表示 52.3*10-4

注意:python 没有 long 类型,int 类型可以使任意长度的整型数字。

字符串(Strings)

字符串是由一系列字符(比如字母、数字、下划线等)组成的字符序列,通常括在引号中——单引号、双引号及三引号。

单引号(''):’Quote me on this’。

双引号(""):"Quote me on this"。

三引号(""" 或者 '''):可以将一个多行字符串用三引号括起来,而且在其中可以任意使用单引号和双引号,比如:

"""
Usage: thingy [OPTIONS]
   -h                        Display this usage message
   -H hostname               Hostname to connect to
"""

注意:

  • 单引号与双引号括起来的字符串之间没有任何区别。
  • 字符串一旦创建其内容就不可改变。
  • python 中没有 char 类型。

格式化方法

如果想用其它信息创建字符串,可以使用 format() 函数实现。例如创建 str_format.py 文件并添加以下内容:

age = 20
name = 'Swaroop'
print('{0} was {1} years old when he wrote this book'.format(name, age))
print('Why is {0} playing with that python?'.format(name))

将输出以下信息:

$ python3 str_format.py
Swaroop was 20 years old when he wrote this book
Why is Swaroop playing with that python?

format() 是字符串对象的一个成员函数,用于将一些变量转化为字符串并做相应的替换,即将 {} 依次替换为由后面的变量转换称的字符串。其中 {} 中的数字编号是从 0 开始的,但不是必需的,即下面的内容和上面的内容具有完全相同的输出效果:

age = 20
name = 'Swaroop'
print('{} was {} years old when he wrote this book'.format(name, age))
print('Why is {} playing with that python?'.format(name))

其实可以通过以下语句实现相同的效果:

name + ’ is ’ + str(age) + ’ years old’

但是用 format() 更优雅,不容易出错,且自动转化变量为字符串类型。

变量(Variable)

变量,顾名思义就是值可以改变的量,变量是标识符(Identifier)的一种。

Python 变量的使用只需要将一个值(字面常量或变量等)赋给变量名即可,无需声明变量类型。比如文件 var.py 有以下声明语句:

i = 5
print (i)
j = i + 1
print (j)
i = 'Hello world!'
print (i)

输出:

python3 var.py
5
6
Hello world!

标识符(Identifier)

标识符是用于唯一标识对象的名称。标识符命名规则:

  • 标识符由且仅有以下字符组成:字母、下划线和数字;
  • 第一个字符必须是字母或下划线;
  • 标识符对大小写字母敏感,即 mynamemyName 是两个不同的标志符。

数据类型(Data Types)

变量具有多种数据类型,最常用的数字和字符串,还有可以创建任意自定义类型的类(class)类型。

对象(Object)

一般意义上,Python 把程序中的所有东西都称为对象,包括数字、字符串以及函数等。

逻辑行和物理行(Logical And Physical Line)

物理行就是在程序源文件中所看到的一行内容,而逻辑行是 Python 所处理的单条声明语句。Python 隐式的假设每一个物理行都对应一个逻辑行,而且也鼓励每行只有一条声明语句,但是一个物理行也可以包含多个逻辑行,即一行中有多条声明语句,此时需要显式利用分号(;)来将每条逻辑声明语句分割开(物理行中的最后一个逻辑声明语句末尾可以不加分号)。比如:

i = 5
print(i)

等同于:

i = 5;
print(i);

也等同于:

i = 5; print(i);

也等同于:

i = 5; print(i)

建议:每行尽量只有一条声明语句,尽量不使用分号,如果逻辑行语句太长可以使用反斜线(\)将单行分成多行。比如:

s = ‘This is a string. \
This continues the string.’

等同于:

s = ‘This is a string. This continues the string.‘

print\
(i)

等同于:

print(i)

缩进(Indentation)

Python 对于缩进的控制非常严格,因为 python 是用缩进来分割语句块(block)的(C语言是由花括号),而缩进是由空白符(空格符和制表符)来实现的。

同一级别的语句要具有相同的缩进量,而且不能随意使用缩进,否则容易出错。比如语句前面不能随便加空格。

操作符与表达式(Operators and Expressions)

Python 的大多数声明语句(即逻辑行)都会包括表达式,表达式由操作符和操作数(operand)组成。

操作符

+:将两个对象相加。对于数字就是求和,对于字符串就是合并。

-:相减和取负数。

*:乘倍。对于数字就是做乘积,对于字符串就是乘倍扩展字符串。比如:'la'*3 得到 'lalala'。

**:求幂。比如:2**3 就是 2 的 3 次幂。

/:做除法。是数学意义上的除法而不是圆整除法。比如:4/3 得到 1.3333333333333 而不是 1(C 语言就是 1)。Python 中的圆整除法的运算符为 //

注意:在 python2 中除法的默认结果就是圆整除法,即当两个数字都为整数时其结果为圆整结果。对 python3 来说默认为一般除法。

//:圆整除法。用来求商数,比如 4//3 其商数为 1,余数为 1。

%:求余,不仅限于整数。比如:8%3 为 2;-25.5%2.25 为 1.5。

<<:位左移。相当于乘 2。

>>:位右移。相当于除 2。

&:按位求与。

|:按位求或。

^:按位亦或。

~:按位取反。

<:小于。

>:大于。

<=:小于等于。

>=:大于等于。

==:等于。

!=:不等于。

not:逻辑非。x = True,则 not xFalse

and:逻辑与。

or:逻辑或。

数学运算与赋值的简便写法

规则就是 var = var operation expression 可以简写为:var operation= expression。

比如:a = a * 3 可以简写为 a *= 3

优先级顺序(Evaluation Order)

按照优先级顺序由低到高以此为(处于同一行中的操作符具有相同的优先级):

  • lambda
  • or
  • and
  • not
  • in, not in
  • is, is not
  • <, <=, >, >=, !=, ==
  • |
  • ^
  • &
  • <<, >>
  • +, -
  • *, /, //, %
  • +x, -x
  • ~x
  • **
  • x.attribute
  • x[index]
  • x[index1:index2]
  • f(arguments...)
  • (expressions, ...)
  • [expressions, ...]
  • {key:datum, ...}

要想改变操作符的优先级顺序,可以使用小括号来实现。比如 ((2+3)+3)*4

结合性(Associativity)

具有同一优先级的操作符一般具有从左向右的结合性。但是也有从有向左结合的操作符,比如赋值操作符(=)。

一些注意事项

  1. python 语言对大小写敏感,所以 printPrint 是不一样的函数名。

  2. 获取帮助 help()

获取函数功能(比如 print() 函数)的帮助信息,直接输入 help(print);获取操作符(比如 return)的帮助信息,直接输入 help(‘return’),需要将操作符用引号括起来。

参考资料

  1. A Byte of Python by Swaroop C H.
回顶部