python 学习笔记 函数和类

与java类似 python的函数也是出于可以复用才使用的 如果一段代码没有复用的价值就可以不用函数

一般的函数可以定义成这样:

def func(a,b=123,*arg,**args):
    for x in arg:#arg是一个list
        print x
    for x,y in args.items():#args是一个dict
        print x,y
    print ‘a:‘,a
    print ‘b:‘,b

func(1,1,2,3,4,c=1,d=2)
结果:
2
3
4
c 1
d 2
a: 1
b: 1   

其中a是位置(必选)参数,b是可选参数

arg是接受不限个的参数,arg在接受后会成为一个list

args则是接受a=1,b=2...这种参数,接收之后args会成为一个dict

下面是一些函数相关练习题(包含一些文件操作),

‘‘‘定义一个函数xulie(dirname,info) 参数:dirname:路径名,
info:需要序列化的数据,功能:
将info数据序列化存储到dirname路径下随机的文件里。 ‘‘‘
#调用系统函数os.listdir获取相应路径的所有文件名,将这些文件名存储在一个list中
#然后使用random随机获取该list中的一个文件名,更改该文件
import random
def xulie(dirname,info):
    list_dir_name=[]
    for x in os.listdir(dirname):
        list_dir_name.append(x)
    temp_name=list_dir_name[random.randint(0, len(list_dir_name)-1)]
    f=open(dirname+temp_name,‘ab‘)
    f.write(info)
    f.close()
xulie(‘d:\\test\\‘, ‘this is a test‘)
def func_3(name=None,**kargs):
    result=[]
    if len(kargs)>0:
        for x,y in kargs.items():
            result.append((x+‘:‘+y))
    result.insert(0, name)
    return result
print func_3(name=‘lilei‘,age=‘20‘,city=‘hk‘)结果 [‘lilei‘, ‘city:hk‘, ‘age:20‘]

类:类与java类似 自身也存在有构造函数(__init__,类实例化时候调用),析构函数(__exit__,退出上下文时候调用,一般与__enter__方法合用),有一个   __del__的魔术方法,在调用del删掉类的实例时调用。此外还有静态方法 是直接通过类调用,而不是类的实例调用。

class text_sort(object):
    def __init__(self):
        print ‘this is init‘
    def __enter__(self):
        print ‘this is enter‘
    def __exit__(self,type,value,traceback):
        # pass
        if type!= None:
            pass
        else :
            pass
        print ‘this is exit‘

    def __del__(self):
        print ‘this is del‘
    @staticmethod
    def staticMethod():
        print ‘this is staticMethod‘

text_sort.staticMethod()
test1=text_sort()
with test1 as d:
    del d

结果:
this is staticMethod
this is init
this is enter
this is exit
this is del

类的练习题,包含类中值得传递等:

‘‘‘Listinfo 包括的方法:
1 列表元素添加: add_key(keyname)  [keyname:字符串或者整数类型]
2 列表元素取值:get_key(num) [num:整数类型]
3 列表合并:update_list(list)      [list:列表类型]
4 删除并且返回最后一个元素:del_key() ‘‘‘
class listinfo(object):
    def __init__(self,*lists):
        #不使用魔术参数  self.args=args处理
        #使用用魔术参数 如何处理(直接写参数 不加括号)
        self.args=[]
        for x in lists:
            self.args.append(x)
    def add_key(self,keyname):
        if isinstance(keyname, str) or isinstance(keyname, int):
            self.args.append(keyname)
            return True
        else:
            return False
    def get_key(self,num):
        result =[]
        if isinstance(num, int):
            for x in self.args:
                if len(result) <= num-1 :
                    result.append(x)
                else:
                    pass
        return result
    def update_list(self,list_in):
        if isinstance(list_in, list):
            self.args.extend(list_in)
            return self.args
        else:
            return ‘not list type‘
        self.args
    def del_key(self):
        return self.args.pop()
    def get_all(self):
        return self.args
listtest=listinfo(4,222,111,33,4545,‘sss‘,‘332‘)
listtest.add_key(9999)
print listtest.get_key(3)
print listtest.update_list([1])
print listtest.del_key()
结果
[4, 222, 111]
[4, 222, 111, 33, 4545, ‘sss‘, ‘332‘, 9999, 1]
1 

python的高级函数map,reduce和filter:它们都是对一个literable的对象进行处理。lambda类似于匿名函数,在一些地方可以和列表生成式互换。

foo=[12,24,36,48,11,33,55,77]
map(lambda x:x*2+5,foo)#将第一个函数分别作用于后面的literable对象,并返回一个list
结果:[29, 53, 77, 101, 27, 71, 115, 159]
filter(lambda x:x%2==0,foo)#将第一个函数分别作用于后面的literable对象,符合结果的返回list
结果:[12, 24, 36, 48]
reduce(lambda x,y:x+y,foo)#将literable中的元素两两运算,且每一次运算之后的结果作为下次运算的第一个参数
结果:296[x for x in foo if x %2 == 0]#结果与filter一样
时间: 2024-08-05 00:03:40

python 学习笔记 函数和类的相关文章

Python学习笔记总结(三)类

一.类简单介绍 1.介绍 类是Python面向对象程序设计(OOP)的主要工具,类建立使用class语句,通过class定义的对象. 类和模块的差异,类是语句,模块是文件. 类和实例 实例:代表程序领域中具体的元素. 类是生产实例的工厂,实例就像带有“数据"的记录,而类是处理这些记录的“程序”. 类是实例工程,类的属性提供行为(数据以及函数[方法]),所有从类产生的实例都继承该类的属性. 类的一个实例可以通过:实例.属性,实例.方法,获得类的属性和方法调用.类支持继承,当我们对class语句产生

Python 学习笔记 - 面向对象(类成员)

上一篇学习了Python面向对象的3大特性,封装,继承和多态,这一篇继续学习类成员,包括字段,方法,属性以及他们的修饰符. 1.字段 字段分为静态字段和普通字段.静态字段属于类,而普通字段属于对象,因此静态字段在内存中只保存一份,而普通字段在每个对象中都保存了一份.定义的时候静态字段定义在类的范围里面,而普通字段定义在方法里面. 例如: >>> class Foo:     # 字段(静态字段)     CC = 123     def __init__(self):         #

python学习笔记 - 函数,集合,包,模块

一.函数 a=1, b=2, 交换值 定义中间量c,C=None, a,b=b,a a,b,c=1,2,3 sys.argv 实现指定的某些功能,使用的时候可以直接调用,简化代码,提高代码复用性 def fun():#定义一个函数,后面是函数名                print("Hello World")#函数体 例如: 1.def sayHello(): print("Hello World") sayHello()  --调用 2.def sayNam

Python学习笔记2:类的定义和继承

# 类的定义 格式: class 类名(父类): __init(self,参数) 成员方法 成员变量 # 所有类的基础object #  私有方法和变量使用__开头 例如:定义一个鸟类 class Bird(object): __have_feather = True # 私有属性:是否有羽毛 way_of_reproduct = "egg" # 公有属性:繁殖方式 def move(self, dx, dy): # 公有方法 position = [0,0] position[0]

廖雪峰Python学习笔记——使用元类

元类(MetaClasses) 元类提供了一个改变Python类行为的有效方式. 元类的定义是"一个类的类".任何实例是它自己的类都是元类. class demo(object): pass obj = demo() print "Class of obj is {0}".format(obj.__class__) print "Class of obj is {0}".format(demo.__class__) # Class of obj

python 学习笔记7(类/对象的属性)

27. 属性的__dict__系统 1)对象的属性可能来自: 其类的定义,叫做类属性 继承父类的定义 该对象实例定义(初始化对象时赋值),叫做对象属性 2)对象的属性存储在对象的 __dict__ 属性中: __dict__ 为字典,键为属性名,值是属性本身. 例子: class bird(object): feather = True # 父类 class chicken(bird): fly = False def __init__(self, age): self.age = age #

Python学习笔记——函数

1.定义函数: 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回.如果一个函数什么也不做,需要用到pass语句(C,Java中可以直接不写代码,python必须要写pass占位,否则报错). def my_abs(x): if x >= 0: return x else: return -x 2.参数检查: isinstance(object, classinfo),其第一个参数为对象,第二

Python学习笔记-函数篇

定义 返回单值 def my_abs(x): if x >= 0: return x else: return -x 返回多值 返回多值就是返回一个tuple import math def move(x, y, step, angle=0): nx = x + step * math.cos(angle) ny = y - step * math.sin(angle) return nx, ny 空函数 def nop(): pass 指定默认参数 必选参数在前,默认参数在后.默认参数需指向不

Python 学习笔记-函数(一)传参

首先明确字符串,数字和元组作为函数参数时是不可变的,但是列表和字典等数据结构却是可以改变的. def change(n):     n[0]='apple' names=['banana','pear'] n=names[:] change(n) print names,n ['banana', 'pear'] ['apple', 'pear'] 修改后让原始列表保持不变. 假设现在要编写一个存储姓名, 年龄,部门并能够根据这三样进行联系人查询的程序: 因为是查询多个元素,首先想到了字典这种数据