python 简单入门教程(三)实现switch,内建函数,模块和包


实现switch

 

python中没有switch,我们可以使用字典跟函数实现

 

def add(x,y):
      return x+y

def sub(x,y):
      return x-y

operator = {"+":add,"-":sub}

def f(x,o,y):
      return operator.get(o)(x,y)

print operator.get('+')(1,2)
print f(1,'+',2)

 

简化

 

x=1
y=2
result = {
      "+":x+y,
      "-":x-y,
      "*":x*y,
      "/":x/y
      }

print result.get("+")

 

 

内建函数

 

一些常用函数

 
运算:abs() max() min() len()
    divmod()  取两个数的商和余数  列  divmod(5,2) 产生 (2, 1)
    pow()    pow(x, y[, z])  返回  (x**y) % z
    round() round(number[, ndigits])  返回一个浮点数
 
callable()  判断某一个函数是否可被调用
type()  返回变量是什么类型的 
isinstance() 判断变量类型  例子 isinstance(l,list) 返回True或False
cmp()  比较两个字符串
range()  生成序列
xrange() 
 
类型转化:type()  int() long() float()  complex() str() list()  tuple() hex() oct() chr() ord()

 

 

字符串处理

 
str.capitalize()  把首字母变大写
str.replace()  替换
str.split()   切割 例子:>>> ip='192.168.1.1'
>>> ip.split('.')
['192', '168', '1', '1']
 
引入string模块 
import string
用法 例如:
>>> string.replace('www','w','a')
'aaa'
 
 
 
 

序列处理

 

filter()    filter(function or None, sequence)  把参数函数返回True的值保留

zip()   选择最短的列表进行并行便利

例如:

name=['wang','zhang','li']
age=[18,19,20]
sex=['x','y','x']

print zip(name,age,sex)

 

输出: [('wang', 18, 'x'), ('zhang', 19, 'y'), ('li', 20, 'x')]
如果sex=['x','y']
只会输出 [('wang', 18, 'x'), ('zhang', 19, 'y')]
map()  比zip()多了个函数函数,可以把列表并行便利的值传给这个函[('wang', 18, 'x'), ('zhang', 19, 'y')]数
例子:
 
a=[1,2,3]
b=[2,3,4]

def f(x,y):
      return x*y
print map(f,a,b)

 

输出[2, 6, 12]
如果有一个比其他的少并且函数参数是None,map会自动部None
  
a=[1,2,3]
b=[2,3]

print map(None,a,b)

   

[(1, 2), (2, 3), (3, None)]
reduce() 递归 具体见help(reduce)

 

 

模块 

 
同一目录有cal.py 跟 1.py文件
cal.py
def add(x,y):
     return x+y
def sub(x,y):
     return x-y

print add(2,3)
~
1.py
import cal
 
 
运行1.py可以看见
add(2,3)的结果,说明,import cal是把cal.py 代码加到了1.py中
 
如果在1.py 用cal.py 的函数
得要加上 cal.xxx

 

import cal

print cal.add(1,2)
print cal.sub(1,2)

 

如果想让cal.py 中的add(2,3)直接调用就执行,improt就不执行
可以写成:
def add(x,y):
     return x+y
def sub(x,y):
     return x-y

if __name__=="__main__":
    print add(2,3)
 
__name__是python内置变量,如果cal.py是直接执行就是__main__,如果不是__name__就是cal
 
 
import cal as c
c.add(1,2)
可以为模块取别名
 
from cal imoprt add
 
这样就不用   cal.add(1,2) 直接add(1,2)就行了
 

 

 

 

创建包的步骤:


建立一个文件夹,文件夹名字就是包名
在该文件夹下创建一个__init__.py文件
根据需要在该文件夹下存放脚本文件,已编译扩展及子包。

导入包 就是 improt 报名.模块名

 

 

  • billvsme

    评论: 恩恩 :),我这里都是针对python2的

    2015-05-27 21:40:55          回复

  • luckystar1992

    评论: python2和python3 有些地方确实是不相同的,以后举例子的时候应该加上版本,这样更严谨些 :)

    2015-05-27 12:36:57          回复

  • billvsme

    评论: 评论

    2015-05-05 14:06:16          回复