python培训拾遗
20140421
1. 三大利器:
dir----列出所有内部方法
a=1
dir(a) 可以列出所有内部方法,就是带两个下划线的;带一个下划线的是普通方法
help---查看帮助
help(a.bit_length)
type---查看数据类型
type(a)
2. str类型的神奇用法
| 源 | 结果 | 解释说明 |
| "hello"+"world" | "helloworld" | 连接 |
| ’hello‘*3 | "hellohellohello" | 重复 |
| “hello”[0] | "h" | 第一个位置 |
| "hello"[-1] | "o" | 最后一个位置 |
| "hello"[::-1] | "olleh" | 反转 |
| "hello"[1:4] | "ell" | 取片段,右边界不包含 |
| len("hello") | 5 | 求长度 |
| "hello"<"jello" | 1 | 字符串比较 |
| "e" in "hello" | 1 | |
| "escapes:\n etc,\033 etc, \if etc" | ||
| 'single quotes' '''triple quotes''' r''raw strings'' | r''表示不会转义,正则表达式中多用 | |
| "The %s is %d" %('abc',12) |
3. 容器
- list ,包括:元素可变---[],元素异构---a=[33,"hiboy",["i', 'am"]]
常用list操作方法
| 操作 | 结果 | 解释说明 |
| a = range(5) | 5 | #[0,1,2,3,4] |
| a.pop() | None | #[0,1,2,3,4] |
| a.reverse() | None | #[4,3,2,1,0] |
| a.sort() | None | #[0,1,2,3,4] |
| a.insert(0,42) | None | #[42,0,1,2,3,4]在第一个位置插入42 |
| a.append(['another','list']) | None | #[0,1,2,3,4,['another','list']] |
| a.extend(['another','list']) | None | #[0,1,2,3,4,'another','list'] |
| a=[0]*3 | #[0,0,0] |
- tuple,元组 包括:元素不可变;元素异构:记住c(0,)逗号必须有,不然就认成别的了
- dict---key不可变,value可变 a={key:value};元素异构;
| 描述 | 解释说明 |
| a={} | 空字典 |
| b={'x':3,'y':4} | |
| c={' uid':105,'login':' beazley',' name':' David Beazley'} | |
| u=c[' uid'] | 获取一个元素值 |
| c[' shell']="/bin/sh" | 赋值 |
| c['login']=23 | |
| b.get('Perl','unknown') | 结果是:unknown |
| b.keys() | 结果是:[x,y] |
| b.values() | [3,4] |
| b.items() | [('y',4),('x',3)] |
| d=b.copy():del b['x'] |
b:{'y':4},d:{'x':3,'y':4} |
| b[2]=3:b.update(d) |
b:{'y':4,2:3},d:{'x':3,'y':4,'2':3} |
dict常用于:遍历
items() keys() values()
iteritems() iterkeys() itervalues() --- 元素超过1w时建议使用,效率高;除此之外下面3个和上面的功能没有区别
4. 控制
- if 不多说了
- for有个神奇的地方:
mylist = "for statement"
for word in mylist:
print word
else:#最终执行
print "End list"
- while不多说
break --终止当前循环
continue--终止本次循环
pass:什么事都不做
- 由于python不支持switch,故可以使用dict模拟switch:
def f1(a):
print 1,a
def f2(b):
print 2,b
def default(d):
print 'default',4
sw={
'f1':f1,
'f2':f2,
'default':default,
}
sw['f1'](4) #1 4
sw['f2'](5) #2 5
sw['default'](8) #default 4
5. 变量,无须声明,初始化等,id(变量名)能够识别是哪个变量的引用 a=1;b=1
6. 灵活无比的函数
deffuncname(arg1,arg2=0,*arg3,**arg4): #分别声明普通参数,元组参数,dict字典参数。一个函数中只可以有一个元组和一个字典
"""doc文档描述放这里"""
statments
return xx
例如:def gcd(a,b):
"this is self definition"
while a!=0:
a,b=b%a,a
return b
>>>gcd.__doc__
"this is self definition"
>>>gcd(12,20)
4
又如:
def h(*t):print t
>>>h(1)
(1,)
>>>h(1,2,3,5,6,7)
(1,2,3,5,6,7)
def k(**d):print d
>>>k(m=1,n=2)
{'m':1,'n':2}
- 函数作用域规则:Local(局部) -> Global(全局) ->Built-in(内置)->NameError异常
- Python没有函数重载,因为函数是没类型的
- python函数可以返回多个值么?可以的 tuple
- 下面函数有什么问题?
- def func(in,out):print in.out out=2;有问题,关键字不可以用,会覆盖原有意义
核心库:
os sys string getopt StringIO struct pickle...
正则库
re module
网络库
socket httplib htmllib ftplib smtplib lxml...
在线参考
标准库:http://docs.python.org/library/index.html
ppt中的作业,实现如下:遇到的问题是,&&要用and代替;range(m,n)是指从m开始到n-1;raw_input()返回的类型默认是string的,用在这里还需要用isdigit()转换一下,因此改用input();print(),打印后不换行,但有一个空格,还没找到好的去除方法
import sys
n = input("Pls input your number:")
for i in range(1,n+1):
for j in range(1,i+1):
# if (j%2==0) and (i%2==0):
#sys.stdout.write("*")
# print "*",
if (j==(i/2+1)) and (i%2==1):
print "!",
else:
print "*",
print "\n"
下面程序的输出是a,c. for each in alist:each相当于有一个指针。each指向第一个元素的时候,打印a;同时remove掉a;这时alist长度变化了,原先第一个元素变成了b;each指针向下走,变成了a;a被打印出来了。因此,这个程序的教训是:不要随意改变列表长度。
alist = ['a','b','c','d']
for each in alist:
print each
alist.remove(each)
模块查找路径依次是:sys.path -- PYTHONPATH -- site-packages
接下来的程序是很常见的用于自测自定义程序是否work的:
#!/usr/bin/python
if __name__=='__main__':
print 'This program is being run by itself'
else:
print 'I am bneing imported from another module'
包:包是一个目录树,每个目录下都有一个__init__.py文件
包工具:目前主要是pip;安装包:pip install/uninstall simplejson
类定义中的:
类方法classmethod:整个类只有这么一个方法,
statcitmethod
例子:实现一个堆栈
class Stack(object):
"A well-known data structure..."
def __init__(self): #构造函数
self.items = []
def push(self,x):
self.items.append(x)
def pop(self):
x=self.items[-1]
del self.items[-1]
return x
def empty(self):
return len(self.items)==0
x=Stack()
x.empty() # True
x.push(1) # [1]
x.empty() # False
x.push("hello") # [1,"hello"]
x.pop() #hello
x.items #[1]
类 - 继承
class SchoolMember(object):
'''Rmpresents any school member.'''
def __init__(self,name,age):
self.name = name
self.age - age
print '(Initialized SchoolMember:%s)' % self.name
def tell(self):
'''Tell my details.'''
print 'Name:"%s" Age:"%s"' %(self.name,self.age),
class Teacher(SchoolMember):
'''Represents a teacher.'''
def __init__(self,name,age,salary):
SchoolMember.__init__(self,name,age)
self.salary = salary
print '(Initialized Teacher:%s)' % self.name
def tell(self):
SchoolMember.tell(self)
print 'Salary:"%d"' % self.salary
class Student(SchoolMember):
def __init__(self,name,age,score):
SchoolMember.__init__(self,name,age)
self.score = score
t=Teacher('Mrs.Shrividya',40,30000) #实例化
s = Student('Swaroop',22,75)
t.tell()
s.tell()
python培训拾遗的更多相关文章
- 智普教育Python培训之Python开发视频教程网络爬虫实战项目
网络爬虫项目实训:看我如何下载韩寒博客文章Python视频 01.mp4 网络爬虫项目实训:看我如何下载韩寒博客文章Python视频 02.mp4 网络爬虫项目实训:看我如何下载韩寒博客文章Pytho ...
- 2015老男孩Python培训第八期视频教程
2015老男孩Python培训第八期视频教程,希望您通过本教程的学习,能学会常用方法和技巧.教程从基础知识开始讲解一直到后期的案例实战,完全零基础学习,从初学者的角度探讨分析问题,循序渐进由易到难,确 ...
- 老王Python培训视频教程(价值500元)【基础进阶项目篇 – 完整版】
老王Python培训视频教程(价值500元)[基础进阶项目篇 – 完整版] 教学大纲python基础篇1-25课时1.虚拟机安装ubuntu开发环境,第一个程序:hello python! (配置开发 ...
- 关于智普 - 千人免费学|Python培训|国内最权威python培训|html5
关于智普 - 千人免费学|Python培训|国内最权威python培训|html5 智普教育隶属于北京顶嵌开源科技有限公司,成立于2008年. 智普开源是基于Linux系统的互联网开源学习平台,讲求务 ...
- 测试开发Python培训:实现屌丝的图片收藏愿望(小插曲)
测试开发Python培训:实现屌丝的图片收藏愿望(小插曲) 男学员在学习python的自动化过程中对于爬虫很感兴趣,有些学员就想能收藏一些图片,供自己欣赏.作为讲师只能是满足愿望,帮助大家实现对美的追 ...
- 测试开发Python培训:模拟登录新浪微博-技术篇
测试开发Python培训:模拟登录新浪微博-技术篇 一般一个初学者项目的起点就是登陆功能的自动化,而面临的项目不同实现的技术难度是不一样的,poptest在做测试开发培训中更加关注技术难点,掌握技 ...
- 测试开发Python培训:抓取新浪微博抓取数据-技术篇
测试开发Python培训:抓取新浪微博抓取数据-技术篇 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的se ...
- 测试开发Python培训:自动发布新浪微博-技术篇
测试开发Python培训:自动发布新浪微博-技术篇 在前面我们教大家如何登陆,大家需要先看自动登陆新浪微博(http://www.cnblogs.com/laoli0201/articles/48 ...
- 测试开发Python培训:抓取新浪微博评论提取目标数据-技术篇
测试开发Python培训:抓取新浪微博评论提取目标数据-技术篇 在前面我分享了几个新浪微博的自动化脚本的实现,下面我们继续实现新的需求,功能需求如下: 1,登陆微博 2,抓取评论页内容3,用正则表 ...
随机推荐
- Struts2 简单的增删改查
1:主页面 <a href="emp-list">emp-list</a> <br> 然后到struts.xml文件中找到对应的emp-list ...
- 【转】理解JMX之介绍和简单使用
原文链接:https://blog.csdn.net/lmy86263/article/details/71037316 近期在项目上需要添加一些功能,想把一个开源工程整合进来,虽说是整合,但是觉得跟 ...
- ELK问题处理
1.Logstash收集tomcat日志时报错warn: log4j:WARN No appenders could be found for logger (org.apache.http.clie ...
- PHP代码审计基础
php核心配置 php.ini 基本配置 语法 大小写敏感 运算符 空值的表达式 安全模式 安全模式 safe_mode = off 用来限制文档的存取,限制环境变量的存取,控制外部程序的执行.PHP ...
- 使用postman做接口测试----柠檬不萌!
目录 一.GET和POST请求的区别 二.http协议 1.http请求分为两个部分 2.http状态码 三.使用postman测试HTTP接口 1.请求方式:get 2.请求方式:post 3.请求 ...
- PHP上传文件超过文件最大限制导致无法上传成功
最近在学习<HeadFirst PHP & MySQL>一书的第5章"使用存储在文件中的数据",做一个文件上传的应用时,出现了错误,就是文件无法成功上传.这个问 ...
- 专业解决 MySQL 查询速度慢与性能差!
Java技术栈 ,一般把连接数设置得大一些). 并发量:同一时刻数据库服务器处理的请求数量 3.超高的 CPU使用率:CPU资源耗尽出现宕机. 4.磁盘 IO:磁盘 IO性能突然下降.大量消耗磁盘性能 ...
- mysql 5.7.20 从frm文件中得到建表语句 (使用 mysql-utilities)
系统环境 centos 7.2 mysql社区版 5.7.20 mysql-utilities 根据官网的说法,截止到2018年5月30日,实用工具的一些功能在Shell的路线图中,鼓励用户迁 ...
- python- 属性 静态方法,类方法
一,面向对象结构与成员 1,1 面向对象结构分析: 那么每个大区域又可以分为多个小部分: class A: company_name = '老男孩教育' # 静态变量(静态字段) __iphone = ...
- 代码编译与反编译 (.py文件与.pyc文件互转)
# 将.py文件转化为.pyc文件,实现代码隐藏的需要,转化后的.pyc文件将在当前目录的__pycache__文件夹下. # .pyc文件的使用与.py文件的使用相同. .py -> .pyc ...