[关闭]
@kangwg 2017-06-18T23:46:32.000000Z 字数 2523 阅读 730

layout: post
title: "python String"
subtitle: "python字符串"
date: 2017-04-09 12:00:00
author: "kangwg"
catalog: true
categories: "python"

- python

字符串的的宽带和精度

  1. '%10f' % pi
  2. 3.141593
  3. '%10.2f' % pi
  4. 3.14
  5. '%.2f%' % pi
  6. 3.14
  7. '%.5s' % 'Guido van Rossum'
  8. Guido
  9. '%.*s' % (5,'Guido van Rossum')
  10. Guido
  11. phonebook={'Cecil':'110'}
  12. 'Cecil's phone number is %(Cecl)s.' % phonebook
  13. Cecil's phone number is 110.

字典

copy&deepcopy

copy 修改不会变,增加删除会变 避免这个可以采用deepcopy

  1. x={'x':'1','y':'2','z':['1','2','3']}
  2. y = x.copy()
  3. y['x']='xx'
  4. y['z'].remove('1')
  5. y['z'].append('4')
  6. {'y': '2', 'x': 'xx', 'z': ['2', '3', '4']}
  7. {'y': '2', 'x': '1', 'z': ['2', '3', '4']}

循环

布尔变量

假:False None () "" 0 [] {}
其它的都是真

条件

  1. == 两个东西是否相等(比较的是值)
  2. is,is not 判断同一性质而不是相等性(== 不一定is,is一定==)
  3. in,not in 成员

断言

调试使用

  1. age = -1
  2. assert 0<age<100,'The age must be realistic'
  3. AssertionError: The age must be realistic

迭代

并行

zip 将序列压缩一对一组合,返回元组列表,当两系列的长度不同时,最短序列用完停止

  1. names = ['anne','beth','george','domon']
  2. ages = [12,45,32,102]
  3. for name,age in zip(names,ages):
  4. print name,'is',age,'years old'

索引

enumerate 提供迭代索引和值

  1. for index,string in enumerate(names):
  2. if 'ann' in string:
  3. names[index] = '[censored]'

else子句

在循环中增加else,它仅在没有调用break时执行

  1. from math import sqrt
  2. for n in range(99,81,-1):
  3. root = sqrt(n)
  4. if root==int(root):
  5. break
  6. else:
  7. print "Didn't find it"

列表推导式

  1. [x*x for x in range(10)]
  2. [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
  3. [x*x for x in range(10) if x % 3==0]
  4. [0, 9, 36, 81]
  5. [[x,y] for x in range(3) for y in range(3)]
  6. [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]

语句

  1. pass 代替空的代码块,什么都不执行(python中是不允许空的代码的)
  2. del 删除变量(不会删除值本身,python是没办法删除值的,自己有垃圾处理机制)
  3. exec 解析字符串为代码块
  1. exec "print 'hello'" in scope

in scope 表示为单独的命名空间,不会有变量和实际中的变量冲突
4. eval 计算字符串的数字表达式的值

  1. eva('2*3')

抽象

函数

文档化函数

  1. 将字符串写在def语句后面或者模块和类的开头,以.doc查看
  2. help(def)可以看到关于函数,包括它的文档字符串的信息

关键字参数和默认值

  1. 按照位置使用的参数是位置参数
  2. 关键字参数,即调用入参时指定那个参数;默认值,写在函数的默认赋值
  1. def print_param(greeting,name):
  2. print greeting,name
  3. print_param(name="hello",greeting="word")
  4. word hello
  5. def print_param(name="hello",greeting="word"):
  6. print greeting,name
  7. print_param(greeting='good')
  8. good hello

收集参数

  1. *收集剩下所有参数,但不能处理关键字参数
  2. ** 处理关键字的收集
  1. def print_param(title,*params):
  2. print params
  3. print_param('test',1,2,3)
  4. ( 1, 2, 3)
  1. def print_params(x,y,z=3,*pospar,**keypar):
  2. print x,y,z
  3. print pospar
  4. print keypar
  5. print_params(1,2,4,5,6,p=1,k=2)
  6. 1 2 4
  7. (5, 6)
  8. {'p': 1, 'k': 2}

参数收集的逆过程

  1. def add(x,y):
  2. print x+y
  3. params=(1,2)
  4. add(*params)
  1. def print_params(**x):
  2. print x.get('name'),x.get('age')
  3. params = {'name':'smith','age':'18'}
  4. print_params(**params)

函数和方法

  1. self 是方法和函数的区别,也可以将这一特性绑在一个函数上
  2. 可以使用其他变量引用同一个方法
  1. class Class:
  2. def method(self):
  3. print 'I have a self'
  4. def function():
  5. print 'I dont....'
  6. instance = Class()
  7. instance.method()
  8. instance.method = function
  9. instance.method()
  10. I have a self
  11. I dont....
  1. class Bird:
  2. song = 'Squaawk'
  3. def sing(self):
  4. print self.song
  5. bird = Bird()
  6. bird.sing()
  7. birdsong = bird.sing
  8. birdsong()
  9. Squaawk
  10. Squaawk

函数私有

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注