python学习手记

1) list和tuple是Python内置的有序集合,一个可变,一个不可变。根据需要来选择使用它们。

.) list是一种有序的集合,可以随时添加和删除其中的元素

list:  classmates = [‘Michael‘, ‘Bob‘, ‘Tracy‘]

具体操作:

.)可以往list中追加元素到末尾:  classmates.append(‘Adam‘)

.)把元素插入到指定的位置,比如索引号为1的位置:  classmates.insert(1, ‘Jack‘)

.)要删除list末尾的元素,用pop()方法:classmates.pop()

.)要删除指定位置的元素,用pop(i)方法

.)要把某个元素替换成别的元素,可以直接赋值给对应的索引位置

tuple: classmates = (‘Michael‘, ‘Bob‘, ‘Tracy‘)

.)tuple和list非常类似,但是tuple一旦初始化就不能修改

.)只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:t = (1,)

2)dict和set

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储

.)d = {‘Michael‘: 95, ‘Bob‘: 75, ‘Tracy‘: 85}

.) 要删除一个key,用pop(key)方法,对应的value也会从dict中删除

.)添加一个key-value,直接赋值即可,classnates["aaa"]=34

.) 如果直接取一个不存在的键会有异常的,要避免key不存在的错误,有两种办法,一是通过

in判断key是否存在‘Thomas‘ in d

.)  s = set([1, 2, 3])

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重

复的key。要创建一个set,需要提供一个list作为输入集合:

add(key)

remove(key)

------循环:

。)  for x in ...

。)  Python提供一个range()函数,可以生成一个整数序列,比如range(5)生成的序列是从0开始小于

5的整数

.  )while循环,只要条件满足,就不断循环

3) python中如何导入模块

#导入modules,import与from...import的不同之处在于,简单说:

# 如果你想在程序中用argv代表sys.argv,

# 则可使用:from sys import argv

# 一般说来,应该避免使用from..import而使用import语句,

# 因为这样可以使你的程序更加易读,也可以避免名称的冲突

4) 装饰器:

现在,假设我们要增强now()函数的功能,比如,在函数调用前后自动打印日志,但又不希望修改now()函数的定义,

这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)

5)  Python的函数定义中有两种特殊的情况,即出现*,**的形式。

如:def myfun1(username, *keys)或def myfun2(username, **keys)等

解释:

* 用来传递任意个无名字参数,这些参数会一个Tuple的形式访问。

**用来处理传递任意个有名字的参数,这些参数用dict来访问。

举例:

def fun1(*keys):

print type(keys)

print "keys="+str(keys)

for i in range(0,len(keys)):

print i,keys[i]

fun1(2,3,4,5)

6) Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去

7) class访问限制

.)在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这

样,就隐藏了内部的复杂逻辑.

.)如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的

变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问

.)如果外部又要操作内部私有变量,可以声明对应的方法get_,set_方法;

.) 需要注意的是,在Python中,变量名类似__xxx__的,也就是以双下划线开头,并且以双下划线

结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量,

所以,不能用__name__、__score__这样的变量名。

.) 有些时候,你会看到以一个下划线开头的实例变量名,比如_name,这样的实例变量外部是可以

访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访

问,但是,请把我视为私有变量,不要随意访问”

.) 双下划线开头的实例变量是不是一定不能从外部访问呢?其实也不是。不能直接访问__name是因

为Python解释器对外把__name变量改成了_Student__name,所以,仍然可以通过

_Student__name来访问__name变量.(备注:Student是对应的l类名).

但是强烈建议你不要这么干,因为不同版本的Python解释器可能会把__name改成不同的变量名。

总的来说就是,Python本身没有任何机制阻止你干坏事,一切全靠自觉

8) 如何判断一个变量的类型,如何获取一个对象的所有方法和属性:

.)基本类型都可以用type()判断:如: type(123),

.) 对于class的继承关系来说,使用type()就很不方便。我们要判断class的类型,可以使用

isinstance()函数.isinstance(h, Dog),如判断h是不是Dog的实例

.) 能用type()判断的基本类型也可以用isinstance()判断,如:isinstance(‘a‘, str)

。) 如果要获得一个对象的所有属性和方法,可以使用dir()函数,它返回一个包含字符串的

list;

。)仅仅把属性和方法列出来是不够的,配合getattr()、setattr()以及hasattr(),我们可以直

接操作一个对象的状态

9) 如何引用自己写的python模块中的类;

分两种情况:

。)如果对应的py文件在同一个目录下,直接import引入就可以使用了,如下:

from A import Animal

a = Animal()

a.run()

这样就引入A.py(也叫A模块)中的Animal类了

。)如果导入的模块A.py与你要调用的py文件不在同一个目录下,直接运行上面的代码会报错的;

需要在python的安装目录下的Lib/site-packages目录下创建文件MyModule.,pth

文件内容是你的A.py文件所在的目录,比如:

A.py文件在D:\,那就在此文件中写D:\,

这样python编译器在执行代码时,就会将D:\目录下的文件也加载到内存进行编译;

。参考资料:http://blog.csdn.net/hyholine/article/details/8581740#t3

自己写的模块如何通过package进行管理:

。)包(Package)可以看成模块的集合,只要一个文件夹下面有个__init__.py文件,那么这个文件

夹就可以看做是一个包。

包下面的文件夹还可以成为包(子包) ;更进一步,多个较小的包可以聚合成一个较大的包,通

过包这种结构,方便了类的管理和维护,也方便了用户的使用

10) python中pyc和pyo的作用

.)pyc文件,是python编译后的字节码(bytecode)文件。只要你运行了py文件,python编译器就          会自动生成一个对应的pyc字节码文件。这个pyc字节码文件,经过python解释器,会生成机器          码运行(这也是为什么pyc文件可以跨平台部署,类似于java的跨平台,java中JVM运行的字节

码文件)。下次调用直接调用pyc,而不调用py文件。直到你这个py文件有改变。python解释

器会检查pyc文件中的生成时间,对比py文件的修改时间,如果py更新,那么就生成新的pyc。

.) pyo文件,是python编译优化后的字节码文件

时间: 2024-11-10 11:49:52

python学习手记的相关文章

python学习:程序控制结构·作业20141219

Python学习:程序控制结构 20141219 编程环境: windows 7 x64 python 2.7.6 题目: 1 编写程序,完成下列题目(1分) 题目内容: 如果列出10以内自然数中3或5的倍数,则包括3,5,6,9.那么这些数字的和为23.要求计算得出任意正整数n以内中3或5的倍数的自然数之和. 输入格式: 一个正整数n. 输出格式: n以内中3或5的倍数的自然数之和. 输入样例: 10 输出样例: 23 时间限制:500ms内存限制:32000kb n = int(raw_in

python学习第二天

python学习的第二天就是个灾难啊,这天被打击了,自己写的作业被否认了,不说了,写博客还是个好习惯的,要坚持下去,就不知道能坚持到什么时候.呵呵!!! 这天教的知识和第一天的知识相差不大,区别在于比第一天讲的更细了(我们是两个老师教的,风格是不一样的),这次也写那些比较细的知识点. python的简介 (1)你的程序一定要有个主文件. (2)对于python,一切事物都是对象,对象基于类创建.#似懂非懂,不过有那么点似懂. 知识点 #__divmod__ 会把两个数字相除的商和余数以元组的方式

[Python 学习] 二、在Linux平台上使用Python

这一节,主要介绍在Linux平台上如何使用Python 1. Python安装. 现在大部分的发行版本都是自带Python的,所以可以不用安装.如果要安装的话,可以使用对应的系统安装指令. Fedora系统:先以root登入,运行 yum install python Ubuntu系统:在root组的用户, 运行 sudo apt-get install python 2. 使用的Python的脚本 Linux是一个以文件为单位的系统,那么我们使用的Python是哪一个文件呢? 这个可以通过指令

python学习之最简单的用户注册及登录验证小程序

文章都是从我的个人博客上粘贴过来的哦,更多内容请点击 http://www.iwangzheng.com 正如很多同学所知道的,楼主开始学习python了,前进的道路曲曲折折,有荆棘也有陷阱,从最简单的小程序写起,每天练习,将python进行到底. 有一点比较别扭的就是python的换行之后空四个空格,ruby都是两个,并且python在方法和循环语句的第一句都要加冒号 mysql> show create table user; mysql> alter table user add sal

python学习--创建模块

昨天做了python客户端和服务器端通信,并把接收到的信息写到数据库,因为对数据库进行操作是个经常调用的行为,所以我想把调用数据库的操作写成一个module来给其它python程序调用,所以将昨天的服务器端程序拆分为两个文件: 1.主程序python.py #!/usr/bin/env python import socket import json import connmysql s = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) h

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho

Python学习day5作业-ATM和购物商城

Python学习day5作业 Python学习day5作业 ATM和购物商城 作业需求 ATM: 指定最大透支额度 可取款 定期还款(每月指定日期还款,如15号) 可存款 定期出账单 支持多用户登陆,用户间转帐 支持多用户 管理员可添加账户.指定用户额度.冻结用户等 购物车: 商品信息- 数量.单价.名称 用户信息- 帐号.密码.余额 用户可充值 购物历史信息 允许用户多次购买,每次可购买多件 余额不足时进行提醒 用户退出时 ,输出当次购物信息 用户下次登陆时可查看购物历史 商品列表分级显示 1

Python学习记录day6

Python学习记录day6 学习 python Python学习记录day6 1.反射 2.常用模块 2.1 sys 2.2 os 2.3 hashlib 2.3 re 1.反射 反射:利用字符串的形式去对象(默认)中操作(寻找)成员 cat commons.py #!/usr/bin/env python#_*_coding:utf-8_*_''' * Created on 2016/12/3 21:54. * @author: Chinge_Yang.''' def login(): pr

python学习笔记12-模块使用

python学习笔记12-模块使用 模块os,sys 什么是模块? 模块os,sys 模块是Python组织代码的一种基本方式 一个Python脚本可以单独运行,也可以导入到另外一个脚本运行,用import hello语句来导入,不用加入.py 什么是Python的 包? Python的模块可以按照目录组织为包 创建一个包的步骤: 创建一个名字为包名的目录 在改目录下创建一个__init__.py文件 根据需要,在该目录下存放脚本文件或已编译的扩展及子包 import pack.m1,pack.