0
点赞
收藏
分享

微信扫一扫

Python基础4 函数、模块和对象


Python基础4 函数、模块和对象

  • ​​一、函数的定义及调用​​
  • ​​二、传参​​
  • ​​1. 参数​​
  • ​​2. 匿名函数​​
  • ​​3. 返回值​​
  • ​​三、模块​​
  • ​​四、作用域​​
  • ​​五、dir()函数​​
  • ​​六、globals()和locals()函数​​
  • ​​七、reload()函数​​
  • ​​八、python中的包​​
  • ​​九、创建类​​
  • ​​1. 类的定义​​
  • ​​2. 创建对象​​
  • ​​3. 内置类属性​​
  • ​​4. 对象销毁​​
  • ​​5. 类的继承​​
  • ​​6. 一些通用的方法​​
  • ​​7. 运算符重载​​
  • ​​8. 属性方法的可见性​​

一、函数的定义及调用

定义

def printme( str ):
"打印传入的字符串到标准显示设备上"
print str
return

调用

printme("测试一下怎么样")

二、传参

所有参数(自变量)在Python里都是按引用传递。

1. 参数

必备参数

#!/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 );

2. 匿名函数

使用lambda来创建匿名函数

#!/usr/bin/python
# -*- coding: UTF-8 -*-

sum = lambda arg1, arg2: arg1 + arg2;

# 调用sum函数
print "相加后的值为 : ", sum( 10, 20 )
print "相加后的值为 : ", sum( 20, 20 )

3. 返回值

#!/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 = 2000
def AddMoney():
# 想改正代码就取消以下注释:
# global Money
Money = Money + 1

print Money
AddMoney()
print Money

五、dir()函数

dir()函数是一个排好序的字符串列表,内容是一个模块里定义过的名字。如:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 导入内置math模块
import math

content = dir(math)

print content;

六、globals()和locals()函数

根据调用地方的不同,globals()和locals()函数可被用来返回全局 局部命名空间里的名字。
如果在函数内部调用locals(),返回的是所有能在该函数里访问的命名;
如果在函数内部调用globals(),返回的是所有在该函数里能访问的全局名字;
两个函数返回的都是字典。

七、reload()函数

一个模块被导入到一个脚本,顶层的代码只会被执行一次。使用reload函数可以重新执行。

八、python中的包

把模块放到目录里,采用import目录的形式,加载目录里的模块。包需要使用__init__.py定义。
Phone/init.py

from Pots import Pots
from Isdn import Isdn
from G3 import G3

导入包:

import Phone

九、创建类

1. 类的定义

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

2. 创建对象

class1 = MyBaseClass("zhangsan",22)
class2 = MyBaseClass("zhaosi",24)

class1.displayBaseClass()
print MyBaseClass.count

3. 内置类属性

  • dict类的属性,包含一个字典,由类的数据属性组成
  • doc类的文档字符串
  • name类名
  • module类定义所在的模块
  • bases类的所有父类构成元素(元组)

4. 对象销毁

自动的垃圾回收机制,在调用del时并不一定立刻销毁对象,需要其引用数量降为0.

del class1

5. 类的继承

class SecondClass(MyBaseClass):
def __init__(self):
print "子类构造方法"
def childMethod(self):
print "子类方法"

子类可重写父类的方法。

6. 一些通用的方法

  • init(self) 构造函数
  • del(self) 析构函数
  • repr(self) 转化为供解释器读取的形式
  • str(self) 将值转换为适合阅读的形式
  • cmp(self,x) 对象比较

7. 运算符重载

暂时用不到,以后用到再看。

8. 属性方法的可见性

  • 类的私有属性:
    两个下划线开头,内部使用时要用:
    self.__private_attr
  • 类的方法
    类内部,使用def为类定义一个方法,必须包含参数self,且为第一个参数。
  • 类的私有方法
    使用__private_method定义,内部调用时使用self.__private_methods

Python不允许实例化的类访问私有数据,但可以使用object._className_attrName来访问属性。

本文参考:
​​​ http://www.runoob.com/python/python-functions.html​​



举报

相关推荐

0 条评论