熟悉Python语句表达式

以下命令和代码依据CentOS7系统内Python2.7.5版本操作

一、Python安装

1、Windows系统安装:

到Python官网下载Python

不能安装到长目录文件下

新建Python文件,安装到C:\Python文件下即可

2、Unix系统安装:

下载tar.gz文件,然后解压文件

编译Python

./configure

make

make install

一般默认安装在/usr/bin或/usr/local/bin子目录中

二、三种方式启动Python

1、通过交互式的启动解释器,每次输入一行Python代码来运行

2、运行Python脚本

3、用集成开发环境中的图形用户界面运行Python

初始Python代码,入门操作

1、程序输出:print

把字符串赋值给变量myString

>>>myString =

>>>print myString

print语句调用str()函数表示对象;交互式解释器调用repr()函数显示对象。

下划线(_)表示最后一个表达式的值。

print语句,与字符串格式操作符(%)结合使用,可实现字符串替换功能,和C语言中的printf()函数非常相似:

>>>print "%s is number %d!" %("python", 1)

%表示由一个字符串来替换,而%d表示由一个整型来替换,另外一个很常用的就是%f,拜师一个浮点型来替换、

print支持将输出重定向到文件;符号>>用来重定向输出

>>>import sys

>>>print >> sys.stderr,'Fatal error: invalid input!'

例:将输出重定向到日志文件

>>> logfile = open('/tmp/mylog.txt','a')

>>> print >> logfile, 'Fatalerror: invalid input!'

>>>logfile.close()

2、程序输入和raw_input()内建函数

raw_input()内建函数,可以读取标准输入,并将读取到的数据赋值给指定的变量;然后使用int()内建函数将用户输入的字符串转换为整型

>>> user = raw_input('Enter loginname: ')

Enter login name: root

>>> print 'Your login is:', user

Your login is: root

例:输入一个数值字符串(并将字符串转换为整型)

>>> num = raw_input('Now enter anumber: ')

Now enter a number: 1024

>>> print 'Doubling your number:%d' % (int(num) * 2)

Doubling your number: 2048

>>> print 'Doubling your number:%d' % (int(num) * 4)

Doubling your number: 4096

>>> print 'Doubling your number:%d' % (int(num) * 10)

Doubling your number: 10240

内建函数int()将数值字符串转换成整型值,这样才可以对它进行数学运算。

3、注释(#)

Python也使用#符号标示注释,从#开始,知道一行结束的内容都是注释

>>> # one comment

... print 'Hello World!' #another comment

Hello World!

4、操作符

+ - * / // % **

加、减、乘、除和取余都是标准操作符,Python有两种除法操作符,单斜杠用作传统除法,双斜杠用作浮点除法(对结果进行四舍五入);还有一个乘方操作符,双星号(**)

>>> print -2 * 4 + 3 ** 2

1

操作符的优先级和运算是一样的:+和-优先级最低,*、/、//、%优先级最高,单目操作符+和-优先级更高,乘方的优先级最高。

Python也有标准比较操作符,比较运算根据表达式的值的真假返回布尔值

>= == !=

例:

True(准确的)

>>> 2 == 4

False(错误的)

False(错误的)

>>> 6.2

True(准确的)

>>> 6.2

True(准确的)

Python目前支持两种“不等于”比较操作符,!=和,分别是C风格和ABC/Pascal风格;也提供了逻辑操作符and or not

例:使用逻辑操作符将任意表达式连接在一起

>>> 6.2

True

>>> 2

False

>>> 2 > 4 or 2

True

>>> not 6.2

True

>>> 3

True

最后一个例子在其她语言中通常是不合法的,不过在Python中支持这样的表达式,实际是:

>>> 3

True

5、变量和赋值

变量名仅仅是一些字母开头的标识符——所谓字母开头——意指大写或小写字母,另外还包括下划线(_),其它的字符可以是数字、字母或下划线。变量名是大小写敏感的,case与CaSe是两个不同变量。Python属于动态类型语言,不需要预先声明变量的类型。

>>> counter = 0

>>> miles = 1000.0

>>> name = 'Bob'

>>> counter = counter + 1

>>> kilometers = 1.609 * miles

>>> print '%f miles is the same as%f km' % (miles, kilometers)

1000.000000 miles is the same as1609.000000 km

第一个是整型赋值;第二个是浮点型赋值;第三个是字符串赋值;第四个是对一个整型增1,最后一个是浮点乘法赋值。

Python也支持增量赋值,也就是操作符和等号合并在一起

>>> n = n * 10

改成增量赋值方式

>>> n *= 10

6、数字

支持五中基本数字类型,其中三种是整型类型

有符号整型(长整型、布尔值)、浮点值、复数

例:

int 0101 84 -237 0x80 017 -680 -0X92

bool True False

float 3.14159 4.2E-10 -90. 6.022e23 -1.609E-19

complex 6.23+1.5j -1.23-875J 0+1j 9.80665-8.31441J -.0224+0j

7、字符串

Python中字符串被定义为引号之间的字符集合,支持使用成对的单引号或双引号,三引号(三个连续的单引号或者双引号)可以用来包含特殊字符;使用索引操作符([])和切片操作符([:])可以得到子字符串;字符串特有的索引规则:第一字符的索引是0,最后一个字符的索引是-1。加号(+)用于字符串连接运算,星号(*)用于字符串重复。

例:

>>> pystr = 'python'

>>> iscool = 'is cool!'

>>> pystr[0]

'p'

>>> pystr[2:5]

'tho'

>>> iscool[:2]

'is'

>>> iscool[3:]

'cool!'

>>> iscool[-1]

'!'

>>> pystr + iscool

'pythonis cool!'

>>> pystr + ' ' + iscool

'python is cool!'

>>> pystr * 2

'pythonpython'

>>> '-' * 20

'--------------------'

>>> pystr = '''python

... is cool'''

'python\nis cool'

>>> print pystr

python

is cool

8、列表和元组

可以保存任意数量任意类型的Python对象;列表元素用中括号([])包裹,元素的个数及元素的值可以改变;元组元素用小括号(())包裹,不可以更改(尽管他们的内容可以);元组可以看成是只读的列表,通过切片运算([]和[:])可以得到子集。

>>> aList = [1,2,3,4]

[1, 2, 3, 4]

>>> aList[0]

1

>>> aList[2:]

[3, 4]

>>> aList[:3]

[1, 2, 3]

>>> aList[1] = 5

[1, 5, 3, 4]

元组也可以进行切片运算,得到的结果也是元组(不能被修改)

>>> aTuple = ('robots',77,93,'try')

>>> aTuple

('robots', 77, 93, 'try')

>>> aTuple[:3]

('robots', 77, 93)

>>> aTuple[1] = 5

Traceback (most recent call last):

File "", line 1, in

TypeError: 'tuple' object does not supportitem assignment

9、字典

是Python中的映射数据类型,有键-值(key-value)对构成;值可以是任意类型的Python对象,字典元素用大括号({})包裹

>>> aDict = {'host': 'earth'} # create dict

>>> aDict['port'] = 80 # add to dict

{'host': 'earth', 'port': 80}

>>> aDict.keys()

['host', 'port']

>>> aDict['host']

'earth'

>>> for key in aDict:

... print key, aDict[key]

...

host earth

port 80

10、if语句

标准if条件语句的语法:

>>> if expression:

... if_suite

如果表达式的值非0或者为布尔值True,则代码组if_suite被执行;否则就去执行下一条语句;代码组(suite)是一个Python术语,由一条或多条语句组成,表示一个子代码块。

>>> if x

... print '"x" must be atleast 0!'

Python也支持else和elif语句

>>> if expression:

... if_suite

... else:

... else_suite

>>> if expression1:

... if_suite

... elif expression2:

... elif_suite

... else:

... else_suite

11、while循环

标准while条件循环语句类似if;要使用缩进来分隔每个子代码块

>>> while expression:

... while_suite

while_suite会被连续不断的循环执行,知道表达式的值变成0或False,接着Pthon会执行下一句代码

>>> counter = 0

>>> while counter

... print 'loop #%d' % (counter)

... counter += 1

...

loop #0

loop #1

loop #2

12、for循环和range()内建函数

Python中的for接受可迭代对象(例如序列或迭代器)作为其参数,每次迭代其中一个元素

>>> print 'I like to use theInternet for:'

I like to use the Internet for:

>>> for item in ['e-mail','net-surfing', 'homework', 'chat']:

... print item

...

e-mail

net-surfing

homework

chat

在print语句的最后添加一个逗号(,),就可以改变它的输出

>>> for item in ['e-mail','net-surfing', 'homework', 'chat']:

... print item,

...

e-mail net-surfing homework chat

为了输出美观,带逗号的print语句输出的元素之间会自动添加一个空格

>>> who = 'knights'

>>> what = 'Ni!'

>>> print 'We are the', who, 'whosay', what, what, what, what

We are the knights who say Ni! Ni! Ni! Ni!

>>> print 'We are the %s who say%s' % \

... (who, ((what + ' ') * 4))

We are the knights who say Ni! Ni! Ni! Ni!

演示一个让Python for循环更像传统循环

>>> for eachNum in [0, 1, 2]:

... print eachNum

...

1

2

Python提供了一个range()内建函数来生成这种列表

>>> for eachNum in range(3):

... print eachNum

...

1

2

对字符串来说,很容易迭代每一个字符

>>> foo = 'abc'

>>> for c in foo:

... print c

...

a

b

c

range()函数经常和len()函数一起用于字符串索引;显示下每一个元素及其索引值

>>> foo = 'abc'

>>> for i in range(len(foo)):

... print foo[i], '(%d)' % i

...

a (0)

b (1)

c (2)

enumerate()函数同时做到了这两点

>>> for i, ch in enumerate(foo):

... print ch, '(%d)' % i

...

a (0)

b (1)

c (2)

13、列表解析

可以在一行中使用一个for循环将所有值放到一个列表当中

>>> squared = [x ** 2 for x inrange (4)]

>>> for i in squared:

... print i

...

1

4

9

列表解析甚至做更复杂的事情;例如挑选出符合要求的值放入列表

>>> sqdEvens = [x ** 2 for x inrange(8) if not x % 2]

>>> for i in sqdEvens:

... print i

...

4

16

36

14、文件和内建函数open()、file()

如何打开文件

>>> handle = open(file_name,access_mode = 'r')

file_name变量包含希望打开的文件的字符串名字;access_mode中'r'表示读取,'w'表示写入,'a'表示添加;其它可能用到的标识'+'标识读写,'b'标识二进制访问;如果未提供access_mode,默认值为'r';如果open()成功,一个文件对象句柄会被返回。

例:提示用户输入文件名,然后打开一个文件,并显示它的内容到屏幕上

>>> filename = raw_input('Enterfile name:')

Enter file name:sunyinpeng

>>> fobj = open(filename, 'a')

>>> for eachLine in fobj:

... print eachLine,

... fobj.close()

15、错误和异常

编译时会检查语法错误,不过Python也允许在程序运行时检测错误

要给代码添加错误检测及异常处理,只要将他们“封装”在try-except语句当中;try之后的代码组,就是打算管理的代码;except之后的代码组,则是处理错误的代码

... filename = raw_input('Enter file name: ')

... fobj = open(filename, 'r')

... for eachLine in fobj:

... print eachLine,

... fobj.close()

... except IOError, e:

... print 'file open error:', e

...

Enter file name: sunyinpeng

16、函数

Python中的函数使用小括号(())调用,函数在调用之前必须先定义,如果函数中没有return语句,就会自动返回None对象

如何定义函数

>>> def function_name(arguments):

... "optional documentation string"

... function_suite

定义一个函数的语法有def关键字及紧随其后的函数名,再加上该函数需要的几个参数组成

例:“在我的值上加我”,它接受一个对象,将它的值加到自身,然后返回和

>>> def addMe2Me(x):

... 'apply + operation to argument'

... return (x + x)

如何调用函数

>>> addMe2Me(4.25)

8.5

>>> addMe2Me(10)

20

>>> addMe2Me('Puthon')

'PuthonPuthon'

>>> addMe2Me([-1, 'abc'])

[-1, 'abc', -1, 'abc']

默认参数

>>> def foo(debug=True):

... 'determine if in debug mode with default argument'

... if debug:

... print 'in debug mode'

... print 'done'

...

in debug mode

done

>>> foo(False)

done

上面的例子中,debug参数有一个默认值True;如果没有传递参数给函数foo(),debug自动拿到一个值True;在第二次调用foo()时,故意传递一个参数False给foo(),这样,默认参数就没有被使用。

17、类

类是面向对象编程的核心,它扮演相关数据及逻辑容器的角色;提供了创建“真实”对象(也就是实例)的蓝图

如何定义类

>>> classClassName(base_class[es]):

... "optional documentation string"

... static_member_declarations

... method_declarations

例:

使用class关键字定义类,可以提供一个可选的父类或者说基类

>>> class FooClass(object):

... """my very first class: FooClass"""

... version = 0.1 #class(data) attribute

... def __init__(self, nm='JohnDoe'):

... """constructor"""

... self.name = nm # class instance(data) attribute

... print 'Created a class instancefor', nm

... def showname(self):

... """display instanceattribute and class name"""

... print 'Your name is', self.name

... print 'My name is',self.__class__.__name__

... def showver(self):

... """displayclass(static) attribute"""

... print self.version # references FooClass.version

... def addMe2Me(self, x): #doesnot use 'self'

... """apply +operation to argument"""

... return x + x

上面的类中,定义了一个静态变量version,它将被所有实例及4个方法共享_init_()、showname()、showver()及熟悉的addMe2Me();这些show*()方法并没有做什么有用的事情,仅仅输出对应的信息。

创建类实例

>>> fool = FooClass()

Created a class instance for John Doe

方法调用

>>> fool.showname()

Your name is John Doe

My name is FooClass

>>> fool.showver()

0.1

>>> print fool.addMe2Me(5)

10

>>> print fool.addMe2Me('xyz')

xyzxyz

18、模块

模块是一种组织形式,可以包含执行代码、函数和类,或者这些东西的组合

导入模块

import module_name

访问模块函数或者模块变量

导入之后,模块的属性(函数和变量)可以通过 .(句点)属性标识法访问。

module.function()

module.variable

例:使用sys模块中的输出函数输出HelloWorld!

>>> import sys

Hello World!

>>> sys.platform

'linux2'

>>> sys.version

'2.7.5 (default, Jul 13 2018, 13:06:57)\n[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]'

这些的代码输出与之前使用的print语句完全相同;唯一的区别在于这次调用了标准输出的write()方法,而且这次需要显示地在字符中提供换行字符;不同于print语句,write()不会自动在字符串后面添加换行符号。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181222G11YV900?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券