python基础一周学习 【任务三】
学习内容1
1.基本函数的构成:定义、实现和调用函数参数,函数返回值。 (第八章)
函数是python中的一种代码块,有固定的名称,可以实现固定的作用,即输入指定的参数值的数量和类型,执行后会返回固定的结果。函数可以使用python中内置的,也可以自己定义。
print(abs(-29)) #求绝对值 print(len([1,2,3])) #求长度 print(str.capitalize('hello world')) #首字母大写 def power(s): #定义一个名为power的函数,它的功能是求参数的平方 return(s*s) print(power(3))
2.函数内部变量的作用域,可以通过locals()和globals()两个函数来了解。(第八章)
这两个函数主要提供基于字典的访问局部和全局变量的方式。每个函数都有着自已的名字空间,叫做局部名字空间,它记录了函数的变量,包括函数的参数和局部定义的变量。每个模块拥有它自已的名字空间,叫做全局名字空间,它记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。还有就是内置名字空间,任何模块均可访问它,它存放着内置的函数和异常。
当一行代码要使用变量 x 的值时,Python会到所有可用的名字空间去查找变量,按照如下顺序:
1.局部名字空间 - 特指当前函数或类的方法。如果函数定义了一个局部变量 x,Python将使用
这个变量,然后停止搜索。
2.全局名字空间 - 特指当前的模块。如果模块定义了一个名为 x 的变量,函数或类,Python将使用这个变量然后停止搜索。
3.内置名字空间 - 对每个模块都是全局的。作为最后的尝试,Python将假设 x 是内置函数或变量。
(locals 是只读的,globals 不是)
此处参考https://blog.csdn.net/scelong/article/details/6977867
3.匿名函数:lambda,了解map函数,并用lambda完成列表(注:列表中各个元素全为数字类型)中每一个元素+1的操作。
lambda表达式可以生成一个函数,与def的功能类似,但这个函数不在其他地方调用,故没必要为其命名。
a=lambda x,y : x*y print(a(3,4)) #12
map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表,这个新列表是一个可迭代对象。
def power(s): #定义一个名为power的函数,它的功能是求参数的平方 return(s*s) answer = map(power,[1,2,3,4,5,6]) print(list(answer)) #将其作为列表返回
a=lambda x: x+1 a_1 = map(a,[1,2,3,4]) print(list(a_1))
4.了解文件操作,如何写入,读取,追加,并了解读取文件中每一行的几种方式。(第十章)
写入、读取和追加
要将文本写入文件,你在调用open() 时需要提供两个实参。第一个实参也是要打开的文件的名称;第二个实参(‘w’ )告诉Python,我们要以写入模式 打开这个文件。打开文件时,可指定读取模式 (‘r’ )、写入模式 (‘w’ )、附加模式 (‘a’ )或让你能够读取和写入文件的模式(‘r+’ )。如果不指定模式实参,Python将以默认的只读模式打开文件。
如果你要写入的文件不存在,函数open() 将自动创建它。然而,以写入(‘w’ )模式打开文件时千万要小心,因为如果指定的文件已经存在,Python将在返回文件对象前清空该文件。
filename = 'demo.txt' with open(filename, 'w') as file_object: file_object.write("hello world") #将hello world写入文件demo.txt
读取每一行
要以每次一行的方式检查文件,可对文件对象使用for 循环:
filename = 'demo.txt' with open(filename) as file_object: for line in file_object: print(line) for lines in line: #将其作为列表输出,可以方便的在with代码块外访问 print(lines.rstrip())
学习内容2
1.创建和使用类(第九章),为什么说python中一切皆对象?,object类代表了什么?
# 类定义 class people: name = '' # 定义基本属性 age = 0 # 定义私有属性,私有属性在类外部无法直接进行访问 __weight = 0 def __init__(self, n, a, w): # 定义构造方法 self.name = n self.age = a self.__weight = w
在这个方法的名称中,开头和末尾各有两个下划线,这是一种约定,旨在避免Python默认方法与普通方法发生名称冲突。
__setitem__按照索引赋值
__getitem__按照索引获取值
__len__获得长度
__cmp__比较运算
__call__函数调用
__init__构造函数,在生成对象时调用
__del__析构函数,释放对象时使用
__repr__打印,转换
__add__加运算
__sub__减运算
__mul__乘运算
__div__除运算
__mod__求余运算
__pow__乘方
**“一切皆对象”**反映了python面向对象编程的实质,在python中,一切都是对象或者对象的关系,像字符串、函数这样设定好的类,用户也可以自创类。
Objects are Python’s abstraction for data. All data in a Python program is represented by objects or by relations between objects. (In a sense, and in conformance to Von Neumann’s model of a “stored program computer,” code is also represented by objects.)
对象是Python对数据的抽象。Python程序中的所有数据都由对象或对象之间的关系表示。(在某种意义上,并且符合冯·诺依曼的“存储程序计算机”的模型,代码也由对象表示的)。
——Python Documentation 3.5.2
2.使用类和实例(第九章),self关键字有什么作用?
def speak(self): print("%s is speaking: I am %d years old" % (self.name, self.age)) p = people('tom', 10, 30) p.speak()
每个与类相关联的方法调用都自动传递实参self ,它是一个指向实例本身
的引用,让实例能够访问类中的属性和方法。
3.继承(第九章)(附加:类中三大特性,封装,继承和多态,c++和java都有多态,python明面上是没有多态的,但是也可以实现,如果有能力,可以探究下如何实现)
编写类时,并非总是要从空白开始。如果你要编写的类是另一个现成类的特殊版本,可使用继承 。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类 ,而新类称为子类 。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
4.import类到其他文件使用的几种方法,并在类中实现一个函数打印__file__关键字,看下__file__前后的变化,并解释原因(第九章)
从其他文件导入某个类时,可以用的方法包括如下几种:
(1)从该模块导入这个类;
(2)导入这个类所在的整个模块
(3)导入这个类所在模块的所有类
class o(): def __init__(self): pass def a(h): print(__file__) print(str(h) + "dd") ## 定义类o
这里有一点问题,结果不同是因为传入的参数不同?
- 零基础入门学习Python(29)--文件:一个任务
- Python学习 第一天任务 (三:Python不止基础学习 继续安装爬虫环境的配置)
- 零基础入门学习Python(24):魔法方法(4)描述符
- python基础教程_学习笔记15:标准库:一些最爱——fileinput
- Python基础学习笔记(一)
- python基础学习-3(函数)
- c#基础学习 - 线程,任务与同步
- Python学习入门基础教程(learning Python)--5 Python文件处理
- python基础学习-6(正则)
- Python基础学习之序列(2)
- 【备忘】零基础学习python
- python基础学习之函数(3)-λ表达式,过滤器,map函数
- Python基础学习(5)网络编程socket、文件上传、粘包问题、socketserver、IO多路复用、线程与进程、进程池、线程池、上下文管理、协程
- python基础学习笔记<面向对象编程>
- python基础学习_列表拾遗
- python基础学习2
- Python基础学习(三)变量和关键字
- Python新手学习基础之函数-return语句与函数调用
- Python学习 —— 基础
- python 学习历程_基础知识(1day)