文档库 最新最全的文档下载
当前位置:文档库 › python学习笔记

python学习笔记

一:range()与xrange()的比较:

在Python 中,range 和xrange 均可以用来做迭代的范围,不过range 返回的是list,而xrange 则返回一个xrange object。

如下:

>>> type(range(10))

>>> type(xrange(10))

>>>

xrange()比range()效率更高:因为range返回的是一个list对象,然后再对list对象进行遍历,而xrange返回的是xrange对象,每次迭代才返回本次迭代的结果。

比如:

for x in range(10000):

will generate a list of ten thousand elements, and will then loop through each of them in turn

for x in xrange(10000):

will genarate ten thousand integers one by one, passing each to the variable x in turn.

二:内置函数:ord()与chr()

可以实现一个字符与ascii之间的转换,比如:

>>> ord('a')

97

>>> chr(97)

'a'

>>>

例如将英文字母放入列表中:

>>> list = []

>>> for i in xrange(ord('a'),ord('z')+1,1):

... list.extend(chr(i))

...

>>>

注意:chr()与str()的区别:例如以下代码:

>>> chr(97)

'a'

>>> str(97)

'97'

将一个字符串转换为对应的ascii码值,map比如:

>>> map(ord,"abcde")

[97, 98, 99, 100, 101]

反过来,比如:

>>> map(chr,range(97,101))

['a', 'b', 'c', 'd']

在将列表中的字符连接起来:

>>> "".join(map(chr,range(97,101)))

'abcd'

>>>

三、os模块:

1、getcwd():返回一个表示当前工作目录的字符串,比如:

>>> os.getcwd()

'F:\\films'

>>> type(os.getcwd())

2、listdir():返回一个参数所指定目录的所有文件名字符串的列表,比如:

>>> type(os.listdir(os.getcwd()))

>>>

>>> os.listdir(os.getcwd())

['.metadata', '.project', '.pydevproject', 'src']

>>>

四、内置数据类型:

1、list:

注意:使用extend()添加元素时,注意参数时list,比如:>>> list = []

>>> list.extend("asdasdsa")

>>> list

['a', 's', 'd', 'a', 's', 'd', 's', 'a']

>>>

>>> list.extend(['adasdsada'])

>>> list

['a', 's', 'd', 'a', 's', 'd', 's', 'a', 'adasdsada']

>>>

>>> list.extend(213121)

Traceback (most recent call last):

File "", line 1, in

TypeError: 'int' object is not iterable

>>>

>>> list.extend("12121")

>>> list

['a', 's', 'd', 'a', 's', 'd', 's', 'a', 'adasdsada', '1', '2', '1', '2', '1']

>>>

在python中,字符串就是一个序列,看成一个列表类型。

五、模块

python的模块---最高级的程序组织单位。

1、模块中的语句:

比如print语句

2、模块的属性:

内置属性:每个模块中都有内置模块。比如:

>>> dir()

['__builtins__', '__doc__', '__name__', '__package__']

自定义属性:就是在模块中定义的属性。比如:

>>> count = 0

>>> str = "i love you"

>>> dir()

['__builtins__', '__doc__', '__name__', '__package__', 'count', 'str']

3、模块中的函数:

内置函数:可以在模块中直接调用。一些常用内置函数,比如:range() 与xrange() 以下常用内置函数:

?help(obj) 在线帮助,obj可是任何类型

?callable(obj) 查看一个obj是不是可以像函数一样调用

?repr(obj) 得到obj的表示字符串,可以利用这个字符串eval重建该对象

的一个拷贝

?eval_r(str) 表示合法的python表达式,返回这个表达式

?dir(obj) 查看obj的name space中可见的name

?hasattr(obj,name) 查看一个obj的name space中是否有name

?getattr(obj,name) 得到一个obj的name space中的一个name

?setattr(obj,name,value) 为一个obj的name space中的一个name指向

vale这个object

?delattr(obj,name) 从obj的name space中删除一个name

?vars(obj) 返回一个object的name space。用dictionary表示

?locals() 返回一个局部name space,用dictionary表示

?globals() 返回一个全局name space,用dictionary表示

?type(obj) 查看一个obj的类型

?isinstance(obj,cls) 查看obj是不是cls的instance

?issubclass(subcls,supcls) 查看subcls是不是supcls的子类

类型转换函数:

?chr(i) 把一个ASCII数值,变成字符

?ord(i) 把一个字符或者unicode字符,变成ASCII数值

?oct(x) 把整数x变成八进制表示的字符串

?hex(x) 把整数x变成十六进制表示的字符串

?str(obj) 得到obj的字符串描述

?list(seq) 把一个sequence转换成一个list

?tuple(seq) 把一个sequence转换成一个tuple

?dict(),dict(list) 转换成一个dictionary

?int(x) 转换成一个integer

?long(x) 转换成一个long interger

?float(x) 转换成一个浮点数

?complex(x) 转换成复数

?max(...) 求最大值

?min(...) 求最小值

自定义函数:自己定义的函数,使用关键字def定义的,不需要定义返回类型,Python 能返回任何类型。

比如:

>>> def func():

... print "hello world !"

...

>>> func()

hello world !

lambda函数:

格式如下:lambda arg1,arg2,… : 表达式

比如:

>>> g = lambda x,y : x*y

>>> print g(12,12)

144

>>> print g

at 0x00DEE930>

表示:lambda语句构建的其实是一个函数对象

比如以下的一些应用:

>>> foo = [1,2,4,5,6,7,8,9,10]

>>> print filter(lambda x:x%2==0,foo)

[2, 4, 6, 8, 10]

>>>

>>> print map(lambda x:x+10,foo)

[11, 12, 14, 15, 16, 17, 18, 19, 20]

>>>

>>> print reduce(lambda x,y:x+y,foo)

52

>>>

generator函数:

该函数的定义域普通函数的定义没有什么区别,只是在函数体内使用yield 生成数据项即可。

与yield关键字的使用。

>>> def gene():

... for i in range(10):

... yield i 使用了yield关键字

...

>>>

>>> print gene()

#表示是generator函数对象

>>>

使用for循环对generator进行遍历,如下:

>>> for i in gene():

... print i

...

1

2

3

4

5

6

7

8

9

>>>

使用generator函数对象中next()方法遍历,如下:

>>> generator = gene()

>>> print generator.next()

>>> print generator.next()

1

>>> print generator.next()

2

>>> print generator.next()

…….

>>> print generator.next()

Traceback (most recent call last):

File "", line 1, in

StopIteration

Yield与return的区别:如下代码:

>>> def func():

... for i in range(5):

... return i

...

>>>

>>> print func()

>>>

而yield:

>>> def func():

... for i in range(5):

... return i

...

>>>

>>> print func()

>>>

yield关键字:包含yield语句的函数会被特地编译成生成器。当函数被调用时,他们返回一个生成器对象,这个对象支持迭代器接口。函数也许会有个return语句,但它的作用是用来yield产生值的。

六、python中的变量和常量:

常量:Python中不像java使用关键字(static final)来声明一个常量,python中没有提供关键字,可以自己定义个常量类来存放常量

局部变量:通常是在函数或者类的方法中直接使用,在该函数或者类方法之外,不能引用该变量。

全局变量:在程序文件中任何地方都可以引用,包括函数和类的内部;

但是如果在函数和类中对全局变量赋值,必须在该函数或者类中声明该变量为全局变量,否则经过赋值操作后,变量为本地变量。

重点:

如果在函数或类中对全局变量进行了赋值,则该全局变量就变成了局部变量,无论是在引用该变量之前还是在引用该变量之后。

如果在函数或类中未对全局变量进行赋值操作,那么对于该函数来说,此变量是一个全局变量。

所以,这时有一个问题,怎样才能在函数或类中对全局变量进行重新赋值呢?这时就要使用到global关键字。

global的作用是:声明为全局变量,那么无论是否对其进行了赋值操作,该变量都将作为全局变量。

在函数或类中使用global声明的变量,就为全局变量,比如:

>>> def func():

... global aaaa

... aaaa = "12321312321"

... print aaaa

...

>>>

>>> func()

12321312321

>>> print aaaa

12321312321

>>>

七、python中的面向对象:

1、self关键字:

类中的方法必须有一个self参数。

2、属性和方法

访问权限:python中的私有属性和私有方法不像java中的私有属性,使用private 修饰符,而是在属性或方法的名字前面使用两个下划线表示私有性。比如__price,__grow()分别表示的是私有属性和私有方法。类的外部不能访问私有属性。

怎样访问类中的私有属性:

格式:Instance._classname__attribute,比如:apple._Fruit__color

通常不采用以上做法来访问私有属性,而是与java一样,通过setter与getter实现。

属法:

类属性可以被类访问,也可以被实例对象访问,但是实例属性只能被实例访问。与java不同的是,java中使用static关键字修饰类属性,而python中不使用任何修饰符,只要声明一下就可以,但是实例属性要使用self关键字作为前缀的。

实例属性:以self作为前缀的属性。

类属性:直接声明的变量,python中类属性都能被类和对象访问。

类的内置属性:用于管理内的内部关系,比如:__dict__、__base__、__doc__

方法:

类中的方法至少要有一个参数,调用时不必给该参数赋值,该参数就是self。相当于java中的this关键字。

Self:用于区分函数和类的方法。注意函数要与方法区分开来。

静态方法:

Python使用函数staticmethod()或@ staticmethod把普通的函数转换为静态方法。比如:

@ staticmethod

def getPrice():

print Fruit.price

def __getPrice():

Fruit.price = Fruit.price + 10

print Fruit.price

count = staticmethod(__getPrice)

注意:python的静态方法没有和类的实例进行名称绑定,python的静态方法相当于全局函数。

类方法:Python使用函数classmethod()或@ classmethod把方法转换为静态方法,这时的方法必须要有参数。比如:

@ classmethod

def getPrice(self):

print Fruit.price

def __getPrice(self):

Fruit.price = Fruit.price + 10

print Fruit.price

count = classmethod(__getPrice)

3、类中的构造函数:__init__()

4、析构函数:__del__()

显示释放对象占用的资源,是一种释放资源的方法。默认自动执行。如果程序中不提供析构函数,会在后台提供默认的析构函数。

5、垃圾回收机制:Python使用gc模块。

6、类的内置方法:

__init__(self,…):初始化对象,在创建新对象时调用

__new__():在__init__()之前被调用,用于生产实例对象。

__getitem__(self,key):把类中的属性定义为序列

__str__:使用print语句时被调用,打印对象的信息,类似于java中object中的toString()方法。该方法中必须使用return语句。

7、方法的动态特性:将一个已经定义好的函数添加到类中,还可以对已经定义好的方法进行修改。

语法如下:

Class_name.method_name = function_name

Class_name:类名

Method_name:新的方法名

Function_name:已经定义好的函数

添加与修改的语法一样,只是method_name表示的含义不一样,添加表示新的名称,修改表示已存在的方法名。修改的时候,原来的类中方法的名字不变,只是将方法中的内容改变。

比如:

class Fruit4:

pass

def add(self):

print "grow..."

if __name__ == "__main__":

Fruit4.grow = add

fruit4 = Fruit4()

fruit4.grow()

8、继承:

在类名后使用一对括号表示继承关系。

如果在父类中定义了__init__方法,子类在自己的__init__方法中必须显示调用父类中的__init__方法,如果子类要扩展父类中的行为,可以添加__init__方法的参数。

比如:

class Apple(Fruit):

def __init__(self,color):

Fruit.__init__(self) 调用父类中的__init__方法

类似于java中的super关键字,在java中,首先实例化父类,再实例化子类。这就是为什么要在子类的__init__中显示调用父类的__init__了。

在java中使用super关键字来调用父类中的构造方法,在子类的无参构造方法中,通常都隐藏了super,那么在python中还可以使用super类的super()调用父类的__init__方法。

在使用super时,父类要继承object。因为super类的实现代码继承了object,所以父类必须继承object。

Super的语法:super(type,obj)

type:某个类

obj:通常是type类的实例化对象,通常使用self关键字表示。

例子:

class Fruit(object):

def __init__(self,args):

print "parent %s" %args

class Apple(Fruit):

def __init__(self,args):

super(Apple,self).__init__(args)

print "child"

if __name__ == "__main__":

Apple("+++++")

如果在子类中没写__init__方法时,当子类在实例化时,会调用父类中的__init__方法,所以在使用时,就应该在子类中写上__init__方法。

在python中,是支持多继承的。语法:class_name(parent_class1,parent_clas s2,….)

在多重继承中,子类只会调用第一个被继承的类的__init__,即parent_class1类中的__init__方法。比如以下代码:

class Fruit(object):

def __init__(self):

print "initialize Fruit"

def grow(self):

print "grow ..."

class Vegetable(object):

def __init__(self):

print "initialize Vegetable"

def plant(self):

print "plant ...."

class Watermelon(Fruit,Vegetable):

pass

if __name__ == "__main__":

w = Watermelon()

w.grow()

w.plant()

9、抽象类:

抽象类有抽象方法组成。

Java中抽象类不可以实例化,通过子类实例化。Python也是。

在java中可以使用abstract修饰符来声明抽象类,而python中只能用一个普通类来表示,怎样来声明一个抽象类呢?可以通过python的NotImplementedError类来模拟抽象类。

NotImplementError类继承自Python运行时错误类RuntimeError。

在python中实现抽象类是这样的:如果对该类进行实例化时,就抛出异常。

比如代码:

#抽象类

class Fruit:

def __init__(self):

if s elf.__class__ is Fruit: #如果实例化的类是Fruit,则抛出异常

try:

abstract()

except:

print "抽象类不能实例化"

return

class Apple(Fruit):

def __init__(self):

Fruit.__init__(self) #调用父类的__init__

print "apple"

if __name__ == "__main__":

apple = Apple()

f = Fruit()

10、多态性:

通过子类为父类实例化,向上转型。这时的对象只能调用父类中的属性和方法。

在python中,有这样一个方法判断某个实例是不是属于某个类,该方法是:isinstance(object, class_or_type_or_tuple)

如下代码:

class Fruit:

def __init__(self,color = None):

self.color = color

class Apple(Fruit):

def __init__(self,color="red"):

Fruit.__init__(self, color)

class Banana(Fruit):

def __init__(self,color="yellow"):

Fruit.__init__(self, color)

class FruitShop:

def sellFruit(self,fruit):

if isinstance(fruit,Apple): # 判断参数fruit的类型

print "sell apple"

if isinstance(fruit, Banana):

print "sell banana"

if isinstance(fruit, Fruit):

print "sell Fruit"

if __name__ == "__main__":

shop = FruitShop()

apple = Apple("red")

banana = Banana("yellow")

shop.sellFruit(apple)

shop.sellFruit(banana)

11、运算符的重载:

八、异常:

try:

except:

finally:

使用raise抛出异常:使用raise语句后,后面的语句将不能执行。

九、File

python学习笔记

1、python中的函数以def来定义,利用缩进来表示函数的完整性,Python 函数没有明显的begin和end, 没有花括号, 用于标函数的开始和结束。唯一的分隔符是一个冒号(:), 接着代码本身是缩进的。如: def hello(): print “Hello,world\n” hello() #调用hello函数 2、所有的Python 模块都是对象并且有几个有用的属性。您可以使用这些属性方便地测试您所书写的模块。下面是一个使用if__name__的技巧。 if __name__ == "__main__": 3、d = {"server":"mpilgrim", "database":"master"} Python中的hash表,利用key来进行查询值 当使用dictionary 时, 您需要知道: dictionary 的key 是大小写敏感的。 Del d[key]:删除某个值 d.clear:清空整个hash队列 4、li = ["a", "b", "mpilgrim", "z", "example"] Python中的数组 li[0:3]:表示从0-2,结果为:['a', 'b', 'mpilgrim'] append 向 list 的末尾追加单个元素。 insert 将单个元素插入到 list 中。数值参数是插入点的索引。请注意, list 中的元素不必唯一, 现在有两个独立的元素具有 'new' 这个值, li[2] 和li[6]。 extend 用来连接 list。请注意不要使用多个参数来调用 extend, 要使用一个 list 参数进行调用。在本例中, 这个 list 有两个元素。 extend (扩展) 与append (追加)的差别 >>> li = ['a', 'b', 'c'] >>> li.extend(['d', 'e', 'f']) >>> li ['a', 'b', 'c', 'd', 'e', 'f'] >>> len(li) 6 >>> li[-1] 'f' >>> li = ['a', 'b', 'c'] >>> li.append(['d', 'e', 'f']) >>> li ['a', 'b', 'c', ['d', 'e', 'f']] >>> len(li) 4 >>> li[-1] ['d', 'e', 'f'] Lists 的两个方法 extend 和 append 看起来类似, 但实际上完全不同。 extend 接受一个参数, 这个参数总是一个 list, 并且添加这个 list 中的

python笔记

Python语言脚本与开发 1.Python环境 python-decorator-3.4.0-3.el7.noarch python-dmidecode-3.10.13-11.el7.x86_64 python-sss-murmur-1.13.0-40.el7.x86_64 python-netaddr-0.7.5-7.el7.noarch python-dns-1.12.0-1.20150617git465785f.el7.noarch python-ply-3.4-10.el7.noarch python-enum34-1.0.4-1.el7.noarch abrt-addon-python-2.1.11-36.el7.centos.x86_64 python-libs-2.7.5-34.el7.x86_64 cryptsetup-python-1.6.7-1.el7.x86_64 libsemanage-python-2.1.10-18.el7.x86_64 python-pyblock-0.53-6.el7.x86_64 python-pyasn1-0.1.6-2.el7.noarch rpm-python-4.11.3-17.el7.x86_64 python-ethtool-0.8-5.el7.x86_64 python-di-0.3-2.el7.noarch python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch python-inotify-0.9.4-4.el7.noarch python-dateutil-1.5-7.el7.noarch speech-dispatcher-python-0.7.1-15.el7.x86_64

Python常用内置函数总结

Python常用内置函数总结 一、数学相关 1、绝对值:abs(-1) 2、最大最小值:max([1,2,3])、min([1,2,3]) 3、序列长度:len('abc')、len([1,2,3])、len((1,2,3)) 4、取模:divmod(5,2)//(2,1) 5、乘方:pow(2,3,4)//2**3/4 6、浮点数:round(1)//1.0 二、功能相关 1、函数是否可调用:callable(funcname),注意,funcname变量要定义过 2、类型判断:isinstance(x,list/int) 3、比较:cmp('hello','hello') 4、快速生成序列:(x)range([start,] stop[, step]) 三、类型转换 1、int(x) 2、long(x) 3、float(x) 4、complex(x) //复数 5、str(x) 6、list(x) 7、tuple(x) //元组 8、hex(x) 9、oct(x) 10、chr(x)//返回x对应的字符,如chr(65)返回‘A' 11、ord(x)//返回字符对应的ASC码数字编号,如ord('A')返回65 四、字符串处理 1、首字母大写:str.capitalize 复制代码代码如下:

>>> 'hello'.capitalize() 'Hello' 2、字符串替换:str.replace 复制代码代码如下: >>> 'hello'.replace('l','2') 'he22o' 可以传三个参数,第三个参数为替换次数 3、字符串切割:str.split 复制代码代码如下: >>> 'hello'.split('l') ['he', '', 'o'] 可以传二个参数,第二个参数为切割次数 以上三个方法都可以引入String模块,然后用string.xxx的方式进行调用。 五、序列处理函数 1、len:序列长度 2、max:序列中最大值 3、min:最小值 4、filter:过滤序列 复制代码代码如下: >>> filter(lambda x:x%2==0, [1,2,3,4,5,6]) [2, 4, 6] 5、zip:并行遍历 复制代码代码如下:

黑马程序员python基础班教程笔记使

爬?基本原理 爬?是模拟?户在浏览器或者App应?上的操作,把操作的过程、实现?动化的程序 当我们在浏览器中输??个url后回?,后台会发?什么? 简单来说这段过程发?了以下四个步骤: 查找域名对应的IP地址。 浏览器?先访问的是DNS(Domain Name System,域名系统),dns的主要 ?作就是把域名转换成相应的IP地址 向IP对应的服务器发送请求。 服务器响应请求,发回??内容。 浏览器显示??内容。 浏览器是如何发送和接收这个数据呢? HTTP协议(HyperText Transfer Protocol,超?本传输协议)?的是为了提供?种发布和接收HTML(HyperText Markup Language)??的?法。 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为?标的HTTP通道,简单讲是HTTP的安全版。 使?urllib爬取数据 1.urlopen( ) 打开?个url的?法,返回?个?件对象,然后可以进?类似?件对象的操作 2.urlretrieve( ) urlretrieve?法将url定位到的html?件下载到你本地的硬盘中。 如果不指定filename,则会存为临时?件。 urlretrieve()返回?个?元组(filename,mine_hdrs) 2.1 不指定路径 说明:清除由于urllib.urlretrieve()所产?的缓存 2.2 指定路径

2.3 urlencode( ) 上?的程序演示了最基本的??抓取,不过,现在?多数?站都是动态? ?,需要你动态地传递参数给它,它做出对应的响应。所以,在访问时,我们需要传递数据给它。最常?的情况是什么?对了,就是登录注册的时候呀。把数据?户名和密码传送到?个URL,然后你得到服务器处理之后的响应,这个该怎么办?下?让我来为?伙伴们揭晓吧!数据传送分为POST和 GET两种?式两种?式有什么区别呢?最重要的区别是GET?式是直接以链接形式访问,链接中包含了所有的参数,当然如果包含了密码的话是?种不安全的选择,不过你可以直观地看到 ??提交了什么内容。 POST则不会在?址上显示所有的参数,不过如果你想直接查看提交了什么就不太?便了,?家可以酌情选择。 这?可以与urlopen结合以实现post?法和get?法: GET?法

Python3基础教程二(个人整理)

Python3 基本数据类型 Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所 指的内存中对象的类型。 等号(=)用来给变量赋值。 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。 多个变量赋值 Python允许你同时为多个变量赋值。例如: 以上实例,创建一个整型对象,值为 1,从后向前赋值,三个变量被赋予相同的数值。 您也可以为多个对象指定多个变量。例如: 以上实例,两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象 "zzzzz" 分配给变量 c。标准数据类型 Python3 中有六个标准的数据类型: ?Number(数字) ?String(字符串) ?List(列表) ?Tuple(元组) ?Set(集合) ?Dictionary(字典)

Python3 的六个标准数据类型中: ?不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);?可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。 Number(数字) Python3 支持int、float、bool、complex(复数)。 在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。像大多数语言一样,数值类型的赋值和计算都是很直观的。 内置的 type() 函数可以用来查询变量所指的对象类型。 此外还可以用 isinstance 来判断: isinstance 和 type 的区别在于: ?type()不会认为子类是一种父类类型。 ?isinstance()会认为子类是一种父类类型。

python函数中文手册

内置函数 一,文档说明 原始文档来自于python v2.7.2 中文译文和用法尚不完全,您可以自由修改和完善, 您可以在文档结尾鸣谢添上您的名字,我们将会感谢您做的贡献! 二,函数列表 1,取绝对值 abs(x)

Return the absolute value of a number. The argument may be a plain or long integer or a floating point number. If the argument is a complex number, its magnitude is returned. 如果你不知道绝对值什么意思,那就要补一下小学数学了! 基本用法 2, all(iterable) Return True if all elements of the iterable are true (or if the iterable is empty). Equivalent to: 3. any(iterable)

Return True if any element of the iterable is true. If the iterable is empty, return False. Equivalent to: 4. basestring() This abstract type is the superclass for str and unicode. It cannot be called or instantiated, but it can be used to test whether an object is an instance of str or unicode. isinstance(obj, basestring) is equivalent to isinstance(obj, (str, unicode)). 是字符串和字符编码的超类,是抽象类型。不能被调用或者实例化。可以用来判断实例是否为字符串或者字符编码。 方法: 5.二进制转换 bin(x) Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns an integer.

python笔记题带答案

答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制 一、对象的引用计数机制 Python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数。 引用计数增加的情况: 1,一个对象分配一个新名称 2,将其放入一个容器中(如列表、元组或字典) 引用计数减少的情况: 1,使用del语句对对象别名显示的销毁 2,引用超出作用域或被重新赋值 ( )函数可以获得对象的当前引用计数 多数情况下,引用计数比你猜测得要大得多。对于不可变数据(如数字和字符串),解释器会在程序的不同部分共享内存,以便节约内存。 二、垃圾回收 1,当一个对象的引用计数归零时,它将被垃圾收集机制处理掉。 2,当两个对象a和b相互引用时,del语句可以减少a和b的引用计数,并销毁用于引用底层对象的名称。然而由于每个对象都包含一个对其他对象的应用,因此引用计数不会归零,对象也不会销毁。(从而导致内存泄露)。为解决这一问题,解释器会定期执行一个循环检测器,搜索不可访问对象的循环并删除它们。 三、内存池机制 Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。 1,Pymalloc机制。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。 2,Python中所有小于256个字节的对象都使用pymalloc实现的分配器,而大的对象则使用系统的malloc。

3,对于Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。 2.什么是lambda函数?它有什么好处? 答:lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数 lambda函数:首要用途是指点短小的回调函数 lambda [arguments]:expression a=lambdax,y:x+y a(3,11) 里面如何实现tuple和list的转换? 答:直接使用tuple和list函数就行了,type()可以判断对象的类型 4.请写出一段Python代码实现删除一个list里面的重复元素 答: 1,使用set函数,set(list) 2,使用字典函数, a=[1,2,4,2,4,5,6,5,7,8,9,0] b={} b=(a) c=list()) c 5.编程用sort进行排序,然后从最后一个元素开始判断 a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3] () last=a[-1] for i inrange(len(a)-2,-1,-1): if last==a[i]:

python3内置函数大全

一、数学相关 1、绝对值:abs(-1) 2、最大最小值:max([1,2,3])、min([1,2,3]) 3、序列长度:len('abc')、len([1,2,3])、len((1,2,3)) 4、取模:divmod(5,2)//(2,1) 5、乘方:pow(2,3,4)//2**3/4 6、浮点数:round(1)//1.0 二、功能相关 1、函数是否可调用:callable(funcname),注意,funcname变量要定义过 2、类型判断:isinstance(x,list/int) 3、比较:cmp('hello','hello') 4、快速生成序列:(x)range([start,] stop[, step]) 三、类型转换 1、int(x) 2、long(x) 3、float(x) 4、complex(x) //复数 5、str(x) 6、list(x) 7、tuple(x) //元组 8、hex(x) 9、oct(x)

10、chr(x)//返回x对应的字符,如chr(65)返回‘A' 11、ord(x)//返回字符对应的ASC码数字编号,如ord('A')返回65 四、字符串处理 1、首字母大写:str.capitalize 复制代码代码如下: >>> 'hello'.capitalize() 'Hello' 2、字符串替换:str.replace 代码如下: >>> 'hello'.replace('l','2') 'he22o' 可以传三个参数,第三个参数为替换次数 3、字符串切割:str.split 代码如下: >>> 'hello'.split('l') ['he', '', 'o']

python基础重点梳理笔记

Python变量和数据类型 变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型。 如果字符串本身包含'怎么办?比如我们要表示字符串I'm OK ,这时,可以用" "括起来表示:"I'm OK" 类似的,如果字符串包含",我们就可以用' '括起来表示:'Learn "Python" in imooc'如果字符串既包含'又包含"怎么办? 这个时候,就需要对字符串的某些特殊字符进行转义,Python字符串用\进行转义:'Bob said \"I\'m OK\".' 字符串前面加个前缀r,表示这是一个raw 字符串,里面的字符就不需要转义了。例如:r'\(~_~)/ \(~_~)/' 表示多行字符串,可以用'''...'''表示: ''' Line 1 Line 2 Line 3''' 还可以在多行字符串前面添加 r ,把这个多行字符串也变成一个raw字符串: Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示, 比如:print u'中文' Python中布尔类型 and 和 or 运算的一条重要法则:短路计算。 1. 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。 2. 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于b,因此返回 b。

Python自学笔记

Python学习笔记 在下面的例子中,我们把一个字符串赋值给变量myString,先用print 来显示变量的内容,之后用变量名称来显示。 >>> myString = 'Hello World!' >>> print myString Hello World! >>> myString 'Hello World!' 程序输入: 下划线(_)在解释器中有特别的含义,表示最后一个表达式的值。所以上面的代码执行之后,下划线变量会包含字符串: >>> _ Hello World! Python 的print 语句,与字符串格式运算符( % )结合使用,可实现字符串替换功能,这一点和C 语言中的printf()函数非常相似: >>> print "%s is number %d!" % ("Python", 1) Python is number 1! %s 表示由一个字符串来替换,而%d 表示由一个整数来替换,另外一个很常用的就是%f,它表示由一个浮点数来替换。 在学习Python 的过程中,如果需要得到一个生疏函数的帮助,只需要对它调用内建函数help()。通过用函数名作为help()的参数就能得到相应的帮助信息: >>> help(raw_input) Help on built-in function raw_input in module __builtin__: 注释: 和大部分脚本及Unix-shell 语言一样,Python 也使用# 符号标示注释,从# 开始,直到一行结束的内容都是注释。 >>> # one comment 运算符: 和其他绝大多数的语言一样,Python 中的标准算术运算符以你熟悉的方式工作 + - * / // % **,加、减、乘、除和取余都是标准运算符。双星号(**)是乘方运算符。 Python 有两种除法运算符: 单斜杠用作传统除法,双斜杠用作浮点除法(对结果进行四舍五入)。 传统除法是指如果两个操作数都是整数的话,它将执行是地板除(取比商小的最大整数),而浮点除法是真正的除法,不管操作数是什么类型,浮点除法总是执行真正的除

python学习笔记(一)

python学习笔记(一) 安装 下载python安装包:https://https://www.wendangku.net/doc/bc14088443.html,/downloads/ 找到你的下载位置,双击安装

安装成功后,在开始菜单中就会多出几个图标。好了安装完毕可以开始使用了。 IDLE 是Python 的图形用户界面(GUI );Python 是Python 的命令提示符界面(command line )。它两都是和Python 解释器交互的手段。Module Docs 是模块手册,意思是Python 各种模块的说明书。 现在我们使用Python 3.9(64-bit)即命令提示符界面试一下! 输入:print(“Hello,World!”)回车,输入出结果“Hello ,World !” 当然我们最好使用GUI 界面。 这两外界面都是我们Python 交互解释器,也是我们用来执行语句的界面。

基本常识 1、数字和表达式 Python解释器可以当成一个很强大的计算器。下面我们来试一下! >>> 412+845 1257 >>> 12310-54131 -41821 >>> 1454*1321 1920734 >>> 87/84 1.0357142857142858 >>> >>> 4//3 1 >>> 1%2 1 >>> 4^2 6 >>>

值得注意的是: 长整型:对于大于2 147 483 647(231)就必须在数字后面加上“L”表示长整型数。2进制数:前面加0b(如0b1111就是二进制中的1111) 8进制数:前面加0o(如010就是八进制中的10)。 16进制数:前面加0x(如0xAF就是十六进制中的AF)。 >>> 0o10 8 >>> 0b1111 15 >>> 0o10 8 >>> 0xffff 65535 >>> 2、程序的结构

python入门教程3

B u i l t -i n f u n c t i o n d a t a t y p e 常用内置函数数据类型 4

1Python内置数据类型概述 D a t a t y p e s O v e r v i e w 2常用数据类型 C o m m o n d a t a t y p e s 4算数运算符和位运算符 Arithmetic operators and b i t w i s e o p e r a t o r s CONTENT 3比较关系运算和条 件表达式 P y t h o n O v e r v i e w 6内置标准数学函数 B u i l t i n s t a n d a r d mathematical function 5混合运算和数值类 型转换 Mixed operations and numeric type conversions

3 Python内置数据类型概述 ?Python语言中,一切皆为对象,而每个对象都属于某个数据类型。 ?Python的数据类型包括内置的数据类型、模块中定义的数据类型和用户自定义的类型。 ?数值数据类型(int,bool,float,complex) ?序列数据类型(str,tuple,bytes,list,bytearray) ?集合数据类型(set,frozenset) ?字典数据类型(dict) ?特殊数据类型(NoneType,NotImplementedType,EllipsisType) ?其他数据类型(模块,类,对象,函数)

?整数数据类型(int)是表示整数的数据类型。 ?Python的整数数位可以为任意长度数位(只受限制于计算机内存)。?整型对象是不可变对象。

python基础笔记

列表常用方法 元组常用方法 集合常用方法

字典常用方法

格式转换 循环基本语法 for变量名in列表: ____变量相关操作 range的基本语法 格式1:range(m) 生成0 到m-1 的整数 格式2:range(m,n) 生成m 到n-1 的整数 格式3:range(m,n,s) 生成m 到n-1 的整数,整数间隔为s range的应用场景 1.配合for循环构造指定次数的循环 for _ in range(..): ____循环执行的代码 2.快速创建由连续的整数作为数据的列表、元组、集合对象 list(range(..)) tuple(range(..)) set(range(..)) 公共方法

通用运算符 for…else基本语法for 变量名in 列表: 变量相关操作 else: 循环正常运行结束后执行的操作

推导式 推导式基本语法 基础语法格式:循环变量for循环 范例:list1 = [data for data in range(5)] 数据处理语法格式:表达式for循环 范例:list1 = [data*5 for data in range(5)] 数据过滤语法格式:表达式for循环if判断 范例:list1 = [data for data in range(5) if data > 200] 推导式的作用 推导式可以快速生成数据存储结构中的数据 范例1:创建包含1到100所有整数的列表 list1 = [data for data in range(1,101)] 范例2:创建包含1到10的平方和的列表 list2 = [data**2 for data in range(1,11)]

python常用函数年初大总结

1.常用内置函数:(不用import就可以直接使用) help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像函数一样调用 repr(obj) 得到obj的表示字符串,可以利用这个字符串eval重建该对象的一个拷贝 eval_r(str) 表示合法的python表达式,返回这个表达式 dir(obj) 查看obj的name space中可见的name hasattr(obj,name) 查看一个obj的name space中是否有name getattr(obj,name) 得到一个obj的name space中的一个name setattr(obj,name,value) 为一个obj的name space中的一个name指向vale这个object delattr(obj,name) 从obj的name space中删除一个name vars(obj) 返回一个object的name space。用dictionary表示 locals() 返回一个局部name space,用dictionary表示 globals() 返回一个全局name space,用dictionary表示 type(obj) 查看一个obj的类型 isinstance(obj,cls) 查看obj是不是cls的instance issubclass(subcls,supcls) 查看subcls是不是supcls的子类 类型转换函数 chr(i) 把一个ASCII数值,变成字符 ord(i) 把一个字符或者unicode字符,变成ASCII数值 oct(x) 把整数x变成八进制表示的字符串 hex(x) 把整数x变成十六进制表示的字符串

python2.72内置函数手册

Python2.72内置函数 1、文档说明 中文译文和用法尚待完善。 2、函数列表 1,取绝对值 abs(x) Return the absolute value of a number. The argument may be a plain or long integer or a floating point number. If the argument is a complex number, its magnitude is returned. 如果你不知道绝对值什么意思,那就要补一下小学数学了! 基本用法 2, all(iterable)

Return True if all elements of the iterable are true (or if the iterable is empty). Equivalent to: 3. any(iterable) Return True if any element of the iterable is true. If the iterable is empty, return False. Equivalent to: 4. basestring() This abstract type is the superclass for str and unicode. It cannot be called or instantiated, but it can be used to test whether an object is an instance of str or unicode. isinstance(obj,basestring) is equivalent to isinstance(obj,(str,unicode)). 是字符串和字符编码的超类,是抽象类型。不能被调用或者实例化。可以用来判断实例是否为字符串或者字符编码。 方法: 5.二进制转换 bin(x) Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns an integer. 转换成二进制表达 方法: 6.布尔类型 bool([x]) Convert a value to a Boolean, using the standard truth testing procedure. If x is false or omitted, this returns False; otherwise it returns True. bool is also a class, which is a subclass of int. Class bool cannot be subclassed further. Its only instances are False and True 布尔类型的转化

Python学习笔记

第二章变量和简单数据类型 在文档——设置文件编码——Unicode中选择utf-8即可。只是每个文档都需要重新设置。 另外如果你用的字体不支持中文也不行,geany不能给中文和英文分别设置字体。Python 2 首行或第二行用# coding:utf-8 在开头加上#coding=gbk或者#coding=utf-8试试 一.概念 1.变量的命名和使用:5条 2.在程序中可随时改变变量的值,而Python将始终记录变量的最新值。 3.在python中,每一句代码都应该顶格写 4.字符串就是一系列字符。在Python中,用引号扩起的都是字符串。 二.方法——修改字符串的大小写 1.title()以首字母大写的方式显示每个单词;字符串/变量.title() 2.upper()将字符串改为全部大写 3.lower()将字符串改为全部小写 三.合并字符串 1.Python使用加号(+)来合并字符串 2.使用制表符或换行符来添加空白 3.要在字符串中添加制表符,可使用字符组合\t,即在字符串前加\t。 4.要在字符串中添加换行符,可使用字符组合\n,即在字符串前加\t。 四.方法——删除空白 1.要确保字符串末尾没有空白,可使用方法rstrip();字符串/变量.rstrip() 注:然而这种删除是暂时的,要永久删除这个字符串中的空白,必须将删除操作的结果存回到变量中。例如:favorite=’python ’; favorite_language=favorite_language.rstrip() ; print(favorite_language) 2.要确保字符串开头没有空白,可使用方法lstrip();字符串/变量.lstrip() 3.同时删除开头和末尾的空白,可使用方法strip() 五.数字 1.整数(int):在Python中可以对整数执行加减乘除运算。 Python使用两个乘号表示乘方;Python还支持运算次序,即用括号来修改运算次序。 2.浮点数:使用浮点数时无需考虑其行为,你只需输入要使用的数字即可。 3.使用函数str()避免类型错误:在字符串中使用整数(int)时,需要显示地指出你希望Python将这个整数用作字符串。为此,可调用函数str():即str(整数)。 第三章列表简介 一.访问列表元素

python_内置函数_练习3

本练习的重点:通过实现与内置函数相同功能的函数来达到锻炼提升编码能力的目的。 1.abs(x)函数 返回一个数的绝对值。 参数可以是一个整数或浮点数。 如果参数是一个复数,则返 回它的模。 如果 x 定义了 abs(),则 abs(x) 将返回 x.abs()。 2.class complex([real[, imag]]) 函数 返回值为 real + imag*1j 的复数,或将字符串或数字转换为复数。如果第一个形参 是字符串,则它被解释为一个复数,并且函数调用时必须没有第二个形参。 当从字符串转换时,字符串在 + 或 - 的周围必须不能有空格。例如 complex('1+2j') 是合法的,但 complex('1 + 2j') 会触发 ValueError 异常。 3.isinstance(object, classinfo) 函数 如果参数 object 是参数 classinfo 的实例或者是其 (直接、间接或 虚拟) 子类则返回 True。 否则返回 False。 如果 classinfo 是类型对象元组(或由其他此类元组递归 组成的元组),那么如果 object 是其中任何一个类型的实例就返回 True。 如果

classinfo 既不是类型,也不是类型元组或类型元组的元组,则将引发 TypeError 异 常。 In [25]:print(abs(-1)) print(abs(-1.212)) print(abs(complex('1+2j'))) # 返回 sqrt(1+4) a = complex('1+2j') 1 1.212 2.23606797749979 请实现下面的函数,模仿abs函数的功能,返回数字的绝对值。 In [23]:import math # 方法1 def my_abs_1(number): if type(number) == int or type(number) == float: if number < 0: return number*(-1) else: return number elif type(number) == complex: return math.sqrt(number.real**2 + number.imag**2) #方法2 # 判断变量类型,可以使用isinstance函数, # 该函数的第一个参数是需要检查类型的对象, # 第二个参数可以是数据类型,也可以是一个元组, # 元组里是多个数据类型,只要满足其中一个就返回True def my_abs_2(number): if isinstance(number, (float,int)): if number < 0: return number*(-1) else: return number elif isinstance(number, complex): return math.sqrt(number.real**2 + number.imag**2) if __name__ == "__main__": print(abs(-1), end = " ") print(abs(-1.212), end = " ") print(abs(complex('1+2j')), end = " \n") print(my_abs_1(-1), end = " ") print(my_abs_1(-1.212), end = " ") print(my_abs_1(complex('1+2j')), end = " \n") print(my_abs_2(-1), end = " ") print(my_abs_2(-1.212), end = " ") print(my_abs_2(complex('1+2j')), end = " ") 1 1.21 2 2.23606797749979 1 1.21 2 2.23606797749979

(完整版)Python基础学习笔记

Python 基础学习笔记 基于《Python语言程序设计基础(第2版)》 第一部分初识Python语言 第1章程序设计基本方法 1.1 计算机的概念 ?计算机是根据指令操作数据的设备,具备功能性和可编程性两个基本特性。 ?计算机技术发展阶段: 1. 第一阶段:1946-1981年,“计算机系统结构阶段”。 2. 第二阶段:1982-2007年,“计算机网络和视窗阶段”。 3. 第三阶段:2008年至今,“复杂信息系统阶段”。 4. 第四阶段:月20年后某个时期开始,“人工智能阶段”。 1.2程序设计语言 1.2.1程序设计语言概述 ?机器语言:直接使用二进制代码表达指令,可被计算机硬件直接识别和执行。不同计算机结构的机器指令不同。 ?汇编语言:使用助记符对应机器语言中的指令,可直接操作计算机硬件。不同计算机结构的汇编指令不同。 机器语言和汇编语言都直接操作计算机硬件并基于此设计,统称“低级语言”。

?高级语言:用更接近自然语言的方式描述计算问题。代码只与编程语言有关,与计算机结构无关。 1.2.2编译和解释 高级语言按执行方式可分为采用编译执行的静态语言和采用解释执行的脚本语言。 ?编译是将源代码转换成目标代码的过程。 ?解释是将源代码逐条转换成目标代码同时逐条运行目标代码的过程。 1.2.3计算机编程 ?我学习Python的原因: 1. 通过编程实现自动化,提高效率。 2. 通过编程了解一个新的广阔世界。 ?学习一门编程语言(重点在于练习) 1. 掌握该语言的语法 2. 结合问题设计程序结构 3. 掌握解决问题的能力 1.3Python语言概述 1.3.1 Python语言的发展 Python语言是一个语法简洁、跨平台、可扩展的开源通用脚本语言。 ?Python语言诞生于1990年,创世人为Guido。 ?2000年10月,Python 2.0正式发布,2010年,Python 2.x系列发布最后一版(2.7)。

python内嵌函数列表

本节介绍的函数在解释器中总是可用的,他们被包含在 __builtin__ 模块里.另外每个模块的 __builtins__ 属性经常指的是这个模块(除了当在restricted execution环境下运行时). _(下划线) 默认情况下,变量 _ 用于在交互模式下表示最近一个表达式的运行结果. 参阅 sys.displayhook (118) __import__(name [, globals [, locals [, fromlist]]]) import语句通过调用这个函数来导入模块. name是包含模块名字的字符串, globals是一个可选的定义全局名称空间的字典, locals是定义局部名称空间的字典, fromlist是from语句目标的列表.例如, import spam语句会调用 __import__('spam', globals(), locals(), []) ,而from spam import foo 语句会调用 __import__('spam', globals(), locals(), ['foo']). 如果模块名在包名字之后(如foo.bar)而且fromlist为空时,就返回对应的模块对象.如果fromlist不为空,则只会返回最顶级的包. 这个函数是一个低等级的模块载入接口.它并不执行import语句的所有步骤(通常情况下局部名称空间并不会随模块中包含对象的名称引用的改变而改变.这个函数可以由用户来重新定义,这样为import语句加入新的行为.默认的执行并不会检查locals参数,而globals只用于决定包的内容(这些参数可以使 __import__()能够完整地访问全局和局部名称空间) abs(x) 返回x的绝对值 apply(func [, args [, keywords]]) 对可调用对象func执行函数调用. args是一个包含固定位置参数的元组, keywords是包含关键参数的字典. apply()函数也可以写做 func(*args ,**keywords ). buffer(sequence [, offset [, size]]) 创建一个新的缓冲器对象.缓冲器通常是一个序列(如字符串)的字节导向序列.缓冲器和字符串在许多地方是相同的,但是它不支持字符串方法,而且也不能使用string模块的函数. callable(object) 当object为可调用对象时返回True,否则返回False

相关文档