python3(2)

第二节

1.模块

Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import sys

print(sys.argv)

import os
os.system("df -h") #调用系统命令

  • sys.argv: 实现从程序外部向程序传递参数。

    argv[1]=a  argv[2]=b argv[3]=c

  • sys.exit([arg]): 程序中间的退出,arg=0为正常退出。
  • sys.getdefaultencoding(): 获取系统当前编码,一般默认为ascii。
  • sys.setdefaultencoding(): 设置系统默认编码,执行dir(sys)时不会看到这个方法,在解释器中执行不通过,可以先执行reload(sys),在执行 setdefaultencoding(‘utf8‘),此时将系统默认编码设置为utf8。(见设置系统默认编码 )
  • sys.getfilesystemencoding(): 获取文件系统使用编码方式,Windows下返回‘mbcs‘,mac下返回‘utf-8‘.
  • sys.path: 获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到。
  • sys.platform: 获取当前系统平台。
  • sys.stdin,sys.stdout,sys.stderr: stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们

python的tab模块

mac:

import sys

import readline

import rlcompleter

if sys.platform == ‘darwin‘ and sys.version_info[0] == 2:

readline.parse_and_bind("bind ^I rl_complete")

else:

readline.parse_and_bind("tab: complete")

linux:

#!/usr/bin/env python

# python startup file

import sys

import readline

import rlcompleter

import atexit

import os

# tab completion

readline.parse_and_bind(‘tab: complete‘)

# history file

histfile = os.path.join(os.environ[‘HOME‘], ‘.pythonhistory‘)

try:

readline.read_history_file(histfile)

except IOError:

pass

atexit.register(readline.write_history_file, histfile)

del os, histfile, readline, rlcompleter

2.pyc

(1). Python是一门解释型语言?

Python并不只是一门解释性语言,因为发现了*.pyc文件的存在。如果是解释型语言,那么生成的*.pyc文件是什么呢?c应该是compiled的缩写才对啊!

(2). 解释型语言和编译型语言

计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二种是解释。

编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。

解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby。

通过以上的例子,我们可以来总结一下解释型语言和编译型语言的优缺点,因为编译型语言在程序运行之前就已经对程序做出了“翻译”,所以在运行时就少掉了“翻译”的过程,所以效率比较高。但是我们也不能一概而论,一些解释型语言也可以通过解释器的优化来在对程序做出翻译时对整个程序做出优化,从而在效率上超过编译型语言。

此外,随着Java等基于虚拟机的语言的兴起,我们又不能把语言纯粹地分成解释型和编译型这两种。

用Java来举例,Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件。所以我们说Java是一种先编译后解释的语言。

(3). Python到底是什么

其实Python和Java/C#一样,也是一门基于虚拟机的语言,我们先来从表面上简单地了解一下Python程序的运行过程吧。

当我们在命令行中输入python hello.py时,其实是激活了Python的“解释器”,告诉“解释器”:你要开始工作了。可是在“解释”之前,其实执行的第一项工作和Java一样,是编译。

只是我们在用Eclipse之类的IDE时,将这两部给融合成了一部而已。其实Python也一样,当我们执行python hello.py时,他也一样执行了这么一个过程,所以我们应该这样来描述Python,Python是一门先编译后解释的语言。

(4). 简述Python的运行过程

在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。

我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。

当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。

当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

3.数据类型初识

1、数字

2是一个整数的例子。

长整数 不过是大一些的整数。

3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。

(-5+4j)和(2.3-4.6j)是复数的例子,其中-5,4为实数,j为虚数,数学中表示复数是什么?。

int(整型)

在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647  在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~

9223372036854775807

long(长整型)

 跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。

  注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。

float(浮点型)

浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。

complex(复数)

 复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。

注:Python中存在小数字池:-5 ~257

2、布尔值

  真或假

  1 或0

3、字符串

"hello world"

万恶的字符串拼接:

  python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。

字符串格式化输出

name = "alex"

print ("i am %s “) % name#输出: i am alex

PS:

字符串是 %s;整数 %d;浮点数%f

字符串常用功能:

  • 移除空白
  • 分割
  • 长度
  • 索引
  • 切片

4、列表

创建列表:

name_list = [‘alex‘, ‘seven‘, ‘eric‘]

name=(‘vjdfkl’,’lfdnb‘)或

name_list= list([‘alex‘, ‘seven‘, ‘eric‘])

基本操作:

names = [‘Alex‘,"Tenglan",‘Eric‘]

索引 names[0]

排序names.sort()

反转:name.reverse()

获取下标:names.index(“Alex")

切片:

>>> names[1:4]  #取下标1至下标4之间的数字,包括1,不包括4

>>> names[1:-1] #取下标1至-1的值,不包括-1

>>> names[0:3]

>>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样

>>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写

>>> names[3:-1] #这样-1就不会被包含了

>>> names[0::2] #后面的2是代表,每隔一个元素,就取一个

>>> names[::2] #和上句效果一样

追加:

插入:

>>> names.insert(2,"XXX")

>>> names.insert(5,"XXX")

删除:

>>> del names[2]

>>> del names[4]

>>> names.remove("Eric") #删除指定元素

>>> names.pop() #删除列表最后一个值

扩展:

>>> names

[‘A‘, ‘B‘, ‘C‘]

>>> b = [1,2,3]

>>> names.extend(b)

>>> names

[‘A‘, ‘B‘, ‘C‘, 1, 2, 3]

拷贝

a=names.copy()

print(a)

统计

names.count(“")

5、元组(不可变列表)创建元组:

ages = (11, 22, 33, 44, 55)

ages = tuple((11, 22, 33, 44, 55))

6

、字典(无序)

创建字典:

person = {"name": "mr.wu", ‘age‘: 18}

person = dict({"name": "mr.wu", ‘age‘: 18})

info =

{

‘stu1101‘: "haha"

,

‘stu1102‘: "Lura"

,

‘stu1103‘: "Mali"

}

常用操作:

  • 索引
  • 新增
  • 查找

>>> info ={‘stu1102‘: ‘Lura‘, ‘stu1103‘: ‘Mali‘, ‘stu1101‘: ‘haha‘}

>>> "stu1102" in info #标准用法

True

>>> info.get("stu1102")  #获取

‘Lura‘‘

>>> info["stu1102"] #同上,但是看下面

‘Lura‘

>>> info["stu1105"]  #如果一个key不存在,就报错,get不会,不存在只返回None

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

KeyError: ‘stu1105‘

  • 删除

>>> info

{‘stu1102‘: ‘Lura‘, ‘stu1103‘: ‘Mali‘, ‘stu1101‘: ‘haha‘}

>>> info.pop("stu1101") #标准删除姿势

‘haha‘

>>> del info[‘stu1103‘] #删除

>>> info

{‘stu1102‘: ‘Lura‘}

>>>info={‘stu1102‘: ‘Lura‘, ‘stu1103‘: ‘Mali‘}

>>> info.popitem()#随机删除

(‘stu1102‘, ‘Lura‘)

>>> info

{‘stu1103‘: ‘Mali‘}

  • 键、值、键值对
  • 循环

#方法1

for key in info:

print(key,info[key])

#方法2

for k,v in info.items(): #会先把dict转成list,数据里大时莫用

print(k,v)

  • 长度

4.数据运算

算数运算

比较运算

赋值运算

逻辑运算

成员运算

身份运算

位运算

#!/usr/bin/python

a = 60            # 60 = 0011 1100

b = 13            # 13 = 0000 1101

c = 0

c = a & b;        # 12 = 0000 1100

print "Line 1 - Value of c is ", c

c = a | b;        # 61 = 0011 1101

print "Line 2 - Value of c is ", c

c = a ^ b;        # 49 = 0011 0001

print "Line 3 - Value of c is ", c

c = ~a;           # -61 = 1100 0011

print "Line 4 - Value of c is ", c

c = a << 2;       # 240 = 1111 0000

print "Line 5 - Value of c is ", c

c = a >> 2;       # 15 = 0000 1111

print "Line 6 - Value of c is ", c

运算符优先级:

5.补充:

一、bytes类型

二、三元运算

result = 值1 if 条件 else 值2

如果条件为真:result = 值1

如果条件为假:result = 值2

三、进制

二进制,01

八进制,01234567

十进制,0123456789

十六进制,0123456789ABCDEF

时间: 2024-10-10 19:53:00

python3(2)的相关文章

ubuntu下卸载python2和升级python3.5

卸载python只需一条语句就可以实现 sudu apt-get remove python ubuntu下安装python3 sudo apt-get install python3 但这样只安装了python3.4 要想使用python3.5,则必须升级python3.4 sudo add-apt-repository ppa:fkrull/deadsnakes sudo apt-get update sudo apt-get install python3.5 使用以上三行命令便可升级py

python3 装饰器

看廖雪峰官网的python3装饰器有感 装饰器即将一个函数作为变量在新的函数中调用此函数. 作业: 能否写出一个@log的decorator,使它既支持: @logdef f():     pass 又支持: @log('execute')def f():     pass      例1: import functools import time def log(*args,**kwargs):     # *args 是个元组     if args and isinstance(args,

Python3 - MySQL适配器 PyMySQL

本文我们为大家介绍 Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查. 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库. PyMySQL 安装 在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装. PyMySQL 下载地址:https

Python3 数字(Number)

1.Python 数字数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变数字数据类型得值,将重新分配内存空间. 2.Python 支持三种不同的数值类型: 整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点.Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型. 浮点型(float) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102

python2和python3中的编码问题

开始拾起python,准备使用python3, 造轮子的过程中遇到了编码的问题,又看了一下python3和python2相比变化的部分. 首先说个概念: unicode:在本文中表示用4byte表示的unicode编码,也是python内部使用的字符串编码方式. utf-8:在本文中指最少1byte表示的unicode编码方式 我在使用 if isinstance(key,unicode): key= key.encode('utf-8') 的时候,发现key值被转成了b'foo',b'bar'

CentOS 7.0 安装 python3.X 脚本

1 #!/bin/sh 2 3 #第一个Linux下的脚本,太多不明白的地方,只是依着网上的例子照葫芦画瓢,能正常运行即可 4 #运行环境 CentOS 7.0 版本 5 6 #首行指定程序的路径,以#号开头的行是注释行 7 8 #任意文本编辑器编辑此文档.默认是gedit 9 #保存在 Document 文件下,假设此文件名为test.sh 10 #右击属性使其可以执行,或者 右击菜单终端 chmod +x test.sh 11 #因为下面的命令创建文件夹需要的权限较高,先执行命令 su -

如何在CentOS6上安装Python2.7和Python3.3

原文来自http://toomuchdata.com/2014/02/16/how-to-install-python-on-centos/,个人觉得对在linux安装新版本Python是很有参考意义,因而转载,原文是英文的,本人简单翻译下,大家看懂即可,有不妥的地方请留言. 如何在CentOS 6上同时安装Python 2.7和Python 3.3 本文将介绍如何在CentOS 6上安装Python 2.7和3.3.下面以Python 2.7.6和Python 3.3.5为例进行说明,但本人实

python3 使用py2exe打包exe

py2exe在sourceforge 的下载只支持到2.7. 针对python3.0+的版本,需要自己编译. 1.下载源码 svn checkout svn://svn.code.sf.net/p/py2exe/svn/trunk py2exe-svn 2.编译环境 这里使用的是vs2014. 3.安装 进入py2exe-3 python setup.py install 这里会进行编译.安装. 此外,python默认使用的是vs9,针对vs2014,需要改下文件: Lib\distutils\

CentOS 5.5 x64下安装升级Python3.3

1.下载linux版本的Python3.3.5,以下是我共享的百度云盘的下载地址 http://pan.baidu.com/s/1kT3IHLH 2.解压: tar -zxvf Python-3.3.5.tgz 3.进入解压后的目录: cd Python-3.3.5 4.创建安装目录,这里我将其安装在/usr/local下 mkdir /usr/local/python3.3 5.编译python3.3 ./configure --prefix=/usr/local/python3.3 6.执行

CentOS 7安装Python3.5,并与Python2.7兼容并存

CentOS7默认安装了python2.7.5,当需要使用python3的时候,可以手动下载Python源码后编译安装. 1.安装python3.5可能使用的依赖 1 yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel 2.下载python wget "https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz&quo