Python学习笔记(三)函数、面向对象、模块发布
2017-09-01 09:48
651 查看
函数调用
如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“传值’来传递对象。命名参数
def get(a,b): print a get(b=1,a=2) =>2
缺省参数,不能从左往右,只能从右往左
def get(a,b=5): print a print b get(2) => 2 5 get(2,2) => 2 2
下面这样会报错
def get(a=5,b): print a return
不定长参数
def arglist(a,*b): print a print b return arglist(1,2,3,4) =>1
(2, 3, 4) 后面变成了元组
def arglist(a,**b): print a print b return arglist(1,x=2,y=3) =>1
{‘x’:2,’y’:3}后面变成了字典dict类型
def arglist(**a): print a for key in a print key return arglist(a=1,b=2,c=3) =>{'a': 1, 'c': 3, 'b': 2} a c b
匿名函数
lambda sum=lambda a,b : a+b sum(1,2) =>3 return return 1,2,3,4,5
自动把1,2,3,4,5变成(1,2,3,4,5)元组
变量的作用域
面向对象
class Employee: ''' this is a test demo class ''' classstr="itis a test class" def __init__(self, name, salary): self.name = name self.salary = salary def hello(self): ''' say hello ''' print self.name print "say hello" import objectori as o worker = o.Employee('xiaoming',10000) print type(worker) =>instance
1、注释的写法 方便写成参考文档
2、方法的写法
3、构造方法的写法
Python类中定义的方法通常有三种:实例方法、类方法和静态方法
实例方法一般以self作为第一个参数也就是this指针。
类方法以cls作为一个参数,cls表示类本身。定义时,使用@classmethod,那么通过cls引用的必定是类对象的属性和方法。
静态方法和一般普通函数一样,使用时使用@staticmethod
Python内置类属性
__dict__ __doc__ __name__ __module__ __bases__ 找父类的
print o.Employee.__name__ =>Employee print o.Employee.__dict__ => {'__module__': 'objectori', 'hello': <function hello at 0x0000000002233AC8>, '__doc__': '\n\tthis is a test demo class\n\t', '__init__': <function __init__ at 0x0000000002233A58>, 'classstr': 'itis a test class'}
Python也有垃圾回收 引用计数
中文注释要加:
# -*- coding:utf-8 -*- 或# -*- coding: gbk -*- #encoding=utf-8
类的继承
class Parent:
parentAttr=100
def init(self):
print ‘父类构造方法’
def parentMethod(self): print '调用父类的方法' def setAttr(self,attr): Parent.parentAttr = attr def getAttr(self): print '父类属性',Parent.parentAttr
class Child(Parent):
def init(self):
print ‘子类构造方法’
def childMethod(self): print '调用子类方法 child method'
测试py
from objectori import Parent,Child
两个对象相加,则可以重载 add()
私有属性
以__开头
class Parent: parentAttr=100 __sex = 'man' def showsex(self): print self.__sex
dir(object)可以查看类里面都有啥属性和方法,还有一个help()
dir(p1)=>['_Parent__sex', '__doc__', '__init__', '__module__', 'getAttr', 'parentAttr', 'parentMethod', 'setAttr', 'showsex']
私有的也可以访问到
print p1._Parent__sex
类方法是可以造作类的
@classmethod//装饰器函数 def update(cls,data) cls.grade = data空间和作用域
globals() locals() 用来列出全局和局部变量
a=1 def fun(): b=2 print locals() fun()=> {'b':2}
模块发布
要求每个文件夹下要有_init.py, 空文件都行在setup.py里写
from distutils.core import setup setup(name="xwp",version="1.0",description="xwp`s module",author="sunyang",py_modules=['suba.aa','suba.bb','subb.cc','subb.dd'])
之后
python setup.py build python setup.py sdist
就可以把打包后的文件发布给别人。用的时候需要用python setup.py install。就成了系统模块,可以直接import进来。
相关文章推荐
- python学习笔记,偏函数,模块,
- Python学习笔记(三):Time、函数、模块、文件I/O、异常处理(快速入门篇)
- python_模块与函数学习笔记
- python 学习笔记day02-python循环、文件、函数、模块
- Python学习笔记(八)模块与函数库
- python 学习笔记(4) python函数和模块
- Python 学习笔记二 函数、模块和对象
- 初学Python的学习笔记7----偏函数、模块、重点是面向对象
- python学习笔记(三) 实现switch,内建函数,模块和包
- 学习笔记☞ python 基础(python3)【四】(函数 function,None,return,列表-2,random模块)
- Python3学习笔记05-字典、文件输入输出、模块、函数参数传递
- Python学习笔记总结(二):函数和模块
- Python学习笔记总结(二)函数和模块
- python学习笔记(九)将函数存储在模块中,导入模块
- Python学习笔记4(函数与模块)
- Python学习笔记-打包发布Python模块或程序,安装包
- Python2.7 学习笔记 (二)—— 函数,模块,正则
- Python学习笔记(三)——模块|面向对象
- Python学习笔记(7)——函数与模块
- Python 学习笔记(二):时间,函数,异常,面向对象