python高级语言应用心得体会_python学习心得(2)

最近通过廖雪峰老师的 站学习python,顺便做一下自己的学习记录。

1.函数

(1)函数简介:

python定义和调用函数都很简单,以例为证:

def  my_power(x):

return x * x

>>>print(my_power(9))

81

函数返回值可以是tuple或者list

def  my_power2(x,n):

i = 1

sum = x

while i 

sum *= x

i+=1

return(sum,n)

print(my_power2(5,3))

对于python的函数来说,其参数主要有3大类:默认参数,可变参数,和关键字参数

def  my_power(a,x=5,*list,**kw):

如上述函数所示,a为固定参数;

x为默认参数,可不输入,使x取默认值5;

list为传入的list或者tuple,长度不固定;

kw为传入的dict,可理解为将变量名一切传入,如:

my_power(1,2,*list,name=’hehe’,score=90)

(2)函数高级特性

python中函数储存在内存中,函数名只是指向函数的变量。因此可以将函数名赋值给另外的变量

>>>abs(10)

10

>>>a = abs

>>>a(-10)

10

因此,可以将函数作为参数或者返回值,形成了高阶函数的概念

def    f():

print(‘hehe’)

def    f1(func):

print(func())

a = f

f1(a)

下面介绍几个高阶函数:

map

map(f,list)

map第一个参数为一个函数,是对list中每个元素的操作,第二个参数为list,如:

>>>map(power,[1,2,3])

[1,4,9]

2.   reduce

同map形式一样,第一个为对迭代操作函数,第二个参数为list,如:

>>>reduce(add,[1,2,3])

6

3. filter

形式用法一样,第一个参数为返回布尔值得函数,返回的list将过滤掉返回值为false的list元素

4. sorted

sorted(list,cmp)

第一个为将要进行排序的list,第二个参数为比较函数,list中相邻两个元素的排列将按cmp函数的返回布尔值进行排序

2.模块

python中,可以将每个文件作为一个模块,当模块间的命名冲突时,需要用到包。

同一包中,需要一个__init__.py文件来标志包,就可以将包与包分开

使用模块用到import,如

import sys

print(sys.args)

在引用时可以重命名,如

import cStringIO as StringIO

使用pip下载模块、使用模块这里不做总结

3.类

1.类的基础

类的概念与java相同,python同一有万物皆对象的观念,即所以类需继承object类:

class Student(object):

def __init__(self,name):

self.name = name

def print_name(self):

print(‘my name is %s ‘ % self.name)

>>>s = Student(‘hehe’)

>>>s.print_name()

my name is hehe

Student后为该类所继承的类,可以继承多个类;

所有成员函数必须有self参数,类似与*this

__init__函数参数是实例创建的时候必须传入的初始化参数

在python中,成员变量访问限制通过在变量前增加“__”来实现,虽然编译器只是给限制变量更改名字来实现限制访问,并不能完全避免访问,但是一定程度上也保障了变量的安全性

self.__name=name

获取类信息的方法有三种:type()、isinstance()、dir()函数

>>>type(abs)

>>>isinstance(123,int)

>>>dir(int)

type用以返回参数的类型;isinstance返回布尔值,判断参数与类型是否对应;dir获取参数类的所有方法与变量

2.类的高级特性

python作为一种动态语言,可以在执行中为类添加方法

s = Student()

from types import MethodType

s.f = MethodType(function,s,Student)

#将函数添加给实例

Student.f = MethodType(function,None,Student)

#给类添加函数

通过__slots__可以限制为类添加的变量

__slots__ = (‘name’,’score’)

#只能给类添加name与score变量

成员函数的装饰器:

为了使成员变量变为属性(通过get/set访问变量),可以使用@property

class Student(object):

@property

def age(self):

return selt._age

#一定要加上‘_’

@age.setter

def age(self,age):

self._age = age

这一样就能直接通过age来赋值和取值

>>>s.age = 20

>>>print(s.age)

关于廖老师讲的定制类与元类,只做简单的总结

类的定制类讲了一些,如

__str__(输出类信息);

__iter__(类的迭代访问,如 for i in s);

___getitem__(类的随机访问函数,如s[0]);

__call__(用实例名为名字的函数,如s())

这次的学习笔记就到这里,比较简陋,供个人复习用

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树高级教程函数212694 人正在系统学习中 相关资源:经典刻录软件尼禄Nero6.6.1.4中文安装版及序列 -其它工具类资源…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月9日
下一篇 2021年1月9日

相关推荐