Python基础笔记
发布于2021-12 浏览:761 回复:0
0
收藏
快速回复

起名法则:

标识符是由字符(A~Z 和 a~z)、下划线和数字组成,但第一个字符不能是数字。 标识符不能和 Python 中的保留字相同。 Python中的标识符中,不能包含空格、@、% 以及 $ 等特殊字符。 在 Python 中,标识符中的字母是严格区分大小写的

可变对象:list dict set

不可变对象:tuple string int float bool

语法基础

切片的语法:[起始:结束:步长] 字符串[start: end: step] 这三个参数都有默认值,默认截取方向是从左往右的 start:默认值为0;end : 默认值未字符串结尾元素; step : 默认值为1;如果切片步长是负值,截取方向则是从右往左的

字符串常用函数:

count 计数功能:显示自定字符在字符串当中的个数

find 查找功能:返回从左第一个指定字符的索引,找不到返回-1

index 查找:返回从左第一个指定字符的索引,找不到报错

split 字符串的拆分:按照指定的内容进行分割

replace 字符串的替换:从左到右替换指定的元素,可以指定替换的个数,默认全部替换

strip字符串标准化:默认去除两边的空格、换行符之类的,去除内容可以指定

字符串的格式化输出:%

list常用函数

 

添加新的元素

list1.append(‘g’) # 在末尾添加元素

list1.insert(2, ‘ooo’) # 在指定位置添加元素,如果指定的下标不存在,那么就是在末尾添加

list2 = [‘z’,‘y’,‘x’]

list1.extend(list2) #合并两个list list2中仍有元素

count 计数 和 index查找

删除元素

print(list1.pop(3))

list1.remove(‘a’)

列表生成式:生成器

通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

函数:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

函数代码块以 def 关键开头,后接函数标识符名称和圆括号()。

任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。

函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

函数内容以冒号起始,并且缩进。

return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

参数传递

位置参数

位置参数是最简单的一种函数调用的方式。位置参数须以正确的顺序传入函数、数量必须和声明时的一样。

def student_name_and_age(name, age):

print(‘姓名:%s 年龄 %s’ %(name, age))

缺省参数

调用函数时,缺省参数的值如果没有传入,则被认为是默认值。

def student_name_and_age(name, age=‘不愿透露’):

“设置默认参数”

print(‘姓名:%s 年龄 %s’ %(name, age))

可变参数

顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。

可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。

***参数

***参数允许你传入0个或任意个含参数名的参数,这些***参数在函数内部自动组装为一个dict。

命名***参数:如果要限制***参数的名字,就可以用命名***参数

参数的组合:在Python中定义函数,可以用必选参数、默认参数、可变参数、***参数和命名***参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名***参数和***参数。

变量的作用域和global变量

1.局部变量 作用域:在函数内

2.全局变量 作用域:在函数外

函数优先使用局部变量 在没有局部变量的情况下, 使用全局变量

lambda匿名函数

python 使用 lambda 来创建匿名函数,lambda 只是一个表达式,函数体比 def 简单很多,lambda 的主体是一个表达式,而不是一个代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去。

lambda 函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。

虽然 lambda 函数看起来只能写一行,却不等同于 C 或 C++ 的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

lambda 若干个输入参数 : 返回值的表达式

lambda arg1, arg2: arg1 + arg2

高阶函数:map / reduce

map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

reduce: 用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,依此类推,最后得到一个结果。

sorted

排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。

闭包:python中的闭包从表现形式上定义(解释)为:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure);返回闭包时牢记一点:返回函数不要引用任何循环变量,或者后续会发生变化的变量。

装饰器

顾名思义,从字面意思就可以理解,它是用来"装饰"Python的工具,使得代码更具有Python简洁的风格。换句话说,它是一种函数的函数,因为装饰器传入的参数就是一个函数,然后通过实现各种功能来对这个函数的功能进行增强。

偏函数:通过设定参数的默认值,降低函数调用的难度

模块:安装/卸载第三方模块

使用类的好处:降低复杂性,更少的bug,提高可维护行

类可以将数据与函数绑定在一起,使代码模块化

调用数据和函数,使用对象名.的方式,使代码更加优雅

面向对象的世界

代码通常称为类的方法,数据通常称为类的属性,实例化的对象称为实例

如何定义类

第一部分:class定义类的***,Athlete符合python标识符命名规则,:表示类内容的开始def __init__(self,a_name,a_dob=None,a_times=[]

第二部分:def定义函数的***,init 方法是一个特殊方法会在实例化对象时自动调用,我们会在这个方法中对数据进行赋值。self作为类中函数的第一个参数,方便该方法调用该类的其他属性和方法。

第三部分:自定义的属性和方法

如何使用类

1.创建对象:对象名 = 类名(参数)

2.使用.调用类的方法和属性:对象.属性名;对象.方法名();私用的属性和方法的定义;在属性和方法名前加 __ 两个下划线

面向对象:这个是接着讲类和对象的知识,类的继承和多态 也是以案例需求来讲解,容易理解一点

定义:class 子类名(父类名):

情况1,如果子类有新增的属性,那么需要在子类__init方法中,调用父类的__init__

情况2,如果子类没有新增的属性,子类不需要写__init__方法

使用:对象名 = 子类名(参数)

继承的好处:代码重用,升级功能(重写),新增功能(新的方法)

方法重写:子类方法与父类方法完全相同,子类若重写了父类的方法,则子类对象调用方法时就是调用的自己类中重新的方法。

多继承

文件操作与常用模块的使用

也是通过案例需求来理解知识点

文件处理模型:输入,处理,输出。

处理:标准化数据,切分数据,top3(最快的3个时间)

输出:将每个人的信息打印在屏幕上显示

open() 为bif(内置函数),参数有多个,必须的是文件路径。 返回的一个文件对象。

file.readline(),读取文件中的一行。

open(‘work/data.txt’,‘w’)第一个参数文件路径,第二个参数打开文件的模式

f.write(‘this is file content’)参数为写入的内容 f.close()关闭文件

 

收藏
点赞
0
个赞
TOP
切换版块