Python 学习笔记二 函数、模块和对象
来源:互联网 发布:大数据的四大特征 编辑:程序博客网 时间:2024/05/21 16:00
Python 学习笔记二 函数、模块和对象
定义函数
def printme( str ): "打印传入的字符串到标准显示设备上" print str return
调用:
printme("测试一下怎么样")
传参
所有参数(自变量)在Python里都是按引用传递。
参数
- 必备参数
#!/usr/bin/python# -*- coding: UTF-8 -*-def printme( str ): "打印任何传入的字符串" print str; return;#调用printme函数printme("必须传参");
- 关键字参数
#!/usr/bin/python# -*- coding: UTF-8 -*-def printme( str ): "打印任何传入的字符串" print str; return;#调用printme函数printme( str = "My string");
- 默认参数
#!/usr/bin/python# -*- coding: UTF-8 -*-def printinfo( name, age = 35 ): "打印任何传入的字符串" print "Name: ", name; print "Age ", age; return;#调用printinfo函数printinfo( age=50, name="miki" );printinfo( name="miki" );
- 不定长参数
def functionname([formal_args,] *var_args_tuple ): "函数_文档字符串" function_suite return [expression]
#!/usr/bin/python# -*- coding: UTF-8 -*-# 可写函数说明def printinfo( arg1, *vartuple ): "打印任何传入的参数" print "输出: " print arg1 for var in vartuple: print var return;# 调用printinfo 函数printinfo( 10 );printinfo( 70, 60, 50 );
匿名函数
使用lambda来创建匿名函数
#!/usr/bin/python# -*- coding: UTF-8 -*-sum = lambda arg1, arg2: arg1 + arg2;# 调用sum函数print "相加后的值为 : ", sum( 10, 20 )print "相加后的值为 : ", sum( 20, 20 )
返回值
#!/usr/bin/python# -*- coding: UTF-8 -*-def sum( arg1, arg2 ): # 返回2个参数的和." total = arg1 + arg2 print "函数内 : ", total return total;# 调用sum函数total = sum( 10, 20 );print "函数外 : ", total
模块
使用import,在一个源文件里包含另一个源文件。
使用 from … import 可以从模块中导入一个指定部分到当前命名空间中。
使用from modname import * 导入指定模块的所有部分。
定位模块搜索顺序是:
当前目录
shell变量PYTHONPATH下的每个目录、
Python的默认路径,unix下为/usr/local/lib/python
作用域
要在函数内部使用外部定义的变量,需要使用global
#!/usr/bin/python# -*- coding: UTF-8 -*-Money = 2000def AddMoney(): # 想改正代码就取消以下注释: # global Money Money = Money + 1print MoneyAddMoney()print Money
dir()函数
dir()函数是一个排好序的字符串列表,内容是一个模块里定义过的名字。如:
#!/usr/bin/python# -*- coding: UTF-8 -*-# 导入内置math模块import mathcontent = dir(math)print content;
globals()和locals()函数
根据调用地方的不同,globals()和locals()函数可被用来返回全局 局部命名空间里的名字。
如果在函数内部调用locals(),返回的是所有能在该函数里访问的命名;
如果在函数内部调用globals(),返回的是所有在该函数里能访问的全局名字;
两个函数返回的都是字典。
reload()函数
一个模块被导入到一个脚本,顶层的代码只会被执行一次。使用reload函数可以重新执行。
python中的包
把模块放到目录里,采用import目录的形式,加载目录里的模块。包需要使用init.py定义。
Phone/init.py
from Pots import Potsfrom Isdn import Isdnfrom G3 import G3
导入包:
import Phone
创建类
class ClassName: '类的帮助信息' class_suite #类体
使用ClassName.doc查看类的帮助信息。
类示例:
#!/usr/bin/python# -*- coding: UTF-8 -*-class MyBaseClass: '基类' count= 0 def __init__(self, name, age): self.name = name self.age= age MyBaseClass.count+= 1 def displayCount(self): print "Total count %d" % MyBaseClass.count def displayBaseClass(self): print "Name : ", self.name, ", age: ", self.age
创建对象:
class1 = MyBaseClass("zhangsan",22)class2 = MyBaseClass("zhaosi",24)class1.displayBaseClass()print MyBaseClass.count
内置类属性
- dict 类的属性,包含一个字典,由类的数据属性组成
- doc 类的文档字符串
- name 类名
- module 类定义所在的模块
- bases 类的所有父类构成元素(元组)
对象销毁
自动的垃圾回收机制,在调用del时并不一定立刻销毁对象,需要其引用数量降为0.
del class1
类的继承
class SecondClass(MyBaseClass): def __init__(self): print "子类构造方法" def childMethod(self): print "子类方法"
子类可重写父类的方法。
一些通用的方法
- init(self)
构造函数 - del(self)
析构函数 - repr(self)
转化为供解释器读取的形式 - str(self)
将值转换为适合阅读的形式 - cmp(self,x)
对象比较
运算符重载
暂时用不到,以后用到再看。
属性方法的可见性
类的私有属性:
两个下划线开头,内部使用时要用:
self.__private_attr类的方法
类内部,使用def为类定义一个方法,必须包含参数self,且为第一个参数。类的私有方法
使用__private_method定义,内部调用时使用self.__private_methods
Python不允许实例化的类访问私有数据,但可以使用object._className_attrName来访问属性。
本文参考:
http://www.runoob.com/python/python-functions.html
- Python 学习笔记二 函数、模块和对象
- Python学习笔记总结(二)函数和模块
- Python学习笔记(三)函数、面向对象、模块发布
- Python学习笔记-初级(二):模块与函数
- python 学习笔记(4) python函数和模块
- Python 学习笔记(二):时间,函数,异常,面向对象
- Python控制流和函数--Python学习笔记二
- Python学习笔记二---OS.Path模块
- Python 爬虫学习笔记二: xpath 模块
- 【python学习笔记二】对象和类型,运算符
- python学习笔记(二) - 函数
- ECMAScript6简介和学习笔记(二)数组 函数 对象
- python学习笔记,偏函数,模块,
- # python学习笔记(二)--函数和异常处理
- Python学习05-函数和模块总结
- JavaScript学习笔记(二) 对象与函数
- python模块和对象
- python学习笔记(二):递归函数
- spring工程中得到注入bean的集中方式
- Copy List with Random Pointer
- brew 安装
- java 字符串系列化及反系列化 (未测试)
- Problem I : Palindrome Partitioning I
- Python 学习笔记二 函数、模块和对象
- 【HDU】1709 - The Balance(母函数)
- zabbix-agent key属性列表
- org.springframework.web.context.ContextLoaderListener
- Service的使用(三)绑定服务
- RSA算法原理(一)
- Java特殊类
- float和margin的区别
- 用生动故事讲解动态规划