Python光速入门笔记1

官方文档教程     3.11.1 Documntation (python.org)

目录

1. bool型:

2. 整形

3. float

4. complex复数,可以进行复数运算

5.list序列 [ ] ,和数组类似,但它可添加元素

    5.1三维数组切片  

    5.2 列表生成式

 6. 字符串类型,

 7. 结构控制语句

7.1 if 表达式 :

7.2  while语句:

7.3 for循环

8 .字典

8.1字典的定义

8.2字典的访问

8.3  字典里添加新的键值对

8.4  字典在内存中的访问原理

8.5    字典的遍历:

9. 函数的定义

9.1  函数参数传递 

9.2  函数可变形参

 9.3 函数的另一种调用方式:

9.4  函数名封装到列表中,

 9.5  函数作为另一个函数的返回值

9.6  匿名函数:lambda 

 9.7 回调函数

9.8 闭包函数 

10. 异常处理 

11. 文件操作

11.1 文件打开和读取

11.2  文件的写入     

11.3 文件的路径

12. 正则表达式

13. 浅拷贝和深拷贝

 14.filter 和map方法

 15. 装饰器函数

 16 . 模块介绍和使用

  16.1 模块的介绍​编辑

 16.2模块的导入方法

​编辑

 16.4 导入模块,并给它起别名

 16.5  常见模块的使用

         16.5.1 math模块 ​​​​​​​        ​编辑

         16.5.2 os模块

        16.5.3  random模块

        16.5.4 datatime模块 

         16.5.5 time模块



变量不需要像c语言先声明,再使用

1. bool型:

  True,False,首字母大写

2. 整形

 除法要注意:‘/’    ‘//’

/   除法带小数,如 7 / 2=3.5

//  除法是整除,如 7 // 2 = 3

3. float

   求余‘%’,在python中float数是可以求余的,如 In [1]: 10.5%3
                                                                                      Out[1]: 1.5

   float不做==等号判定,要比较两个float数大小,让它们相减的绝对值,结果小于一个很小的数,说明它们相等。

4. complex复数,可以进行复数运算

5.list序列 [ ] ,和数组类似,但它可添加元素

x = [1,2,3] ,s = [''abc'',''def'']

x.append(2),  x  = [1,2,3,2]  这里的x[1] 与x[3]指向同一个2,也就是说列表在内存中只有一个2,只是x[1] 与x[3]都指向这个内存

两个序列可以直接相加拼接起来,s+x = [1,2,3,''abc'',''def'']

并不是说把对象放进序列里,而是序列的元素指向这些对象,如s[0]指向 1

 当我们把x=s+t 的[3] 元x[3]=‘xyz’,元素[3]就会指向另一个对象,不像数组是直接在内存中修改,原来的对象abc,会被自动释放

列表x*2会把元素翻一翻,多出来的元素还是按顺序指向原来的对象,并不会新创建对象

 嵌套列表 x = [ [] ] 表示x是一个列表,它的第0个元素是一个空列表

列表切片

x[-1] 代表最后一个元素,x[-2] 倒数第二个元素

 

 只取第1,第2 个元素,[1:3] 表示从第1开始,终于3,但不要3,并且这里是创建了新列表y,对y改变,原来的列表x不会改变 

 y = x[0:4:2],表示从0开始取,每次加2,到大于等于4为止,即只取x[0],x[2]

寻找列表中某个对象的下标:寻找3的下标为x[2]

元组tuple:用 (),元组的访问和列表一样,用x[0]访问第0个元素,但元组是只读的,一旦建立了引用关系,这个引用关系就不能动了

 如 x定义为元组,第一个元素的引用关系是指向对象[0,1,2],修改x1只是新创建了对象[7,8,9],x1指向了新对象,并不会改变x,但元组指向一个可变的列表,列表元素增加,元组会发生变化,如下右图

 

    5.1三维数组切片  

    [16,197,768],表示有16个向量,每个向量大小的197*768,16个197*768的二维数组
        【
          【[  ],[ ]  ...197个[]】,#每[]有768个元素
          【[  ],[ ]  ...197个[]】,#每[]有768个元素
           .................................
          一共16行【】,每个【】是197*768的二维数组,【】里面是197个[] 768长度的数组
        】
        #x[:, 0]返回一个二维数组,取第1列上的所有数据,即所有行的第0个元素,第0个元素是一个768个元素的数组[],所以返回16*768
       

    5.2 列表生成式

        要生成的数放在for前面

 6. 字符串类型,

可用单引号‘a’、双引号"a",三引号"""a"""

 想要在字符串中间嵌入‘ ’引号,需要加转义符号\

 

 字符串加前缀‘r’,不把\当成转义字符,

 7. 结构控制语句

7.1 if 表达式 :

   ...........

   ............   同一级的if语句每行要有相同的缩进

elif 表达式 :

  .........

else :

7.2  while语句:

   while 表达式 :

       .....................

7.3 for循环

第一取1给item,第二次取2给item,依次类推......

    

 for i in range(10)

 for i in range(0,100,2) 

 score = [10, 20,30,40]

 for score in enumerate(score)   ,直接把索引和元素值拿出来

     idx,sc =  score , 每次循环把列表score 的索引给idx,元素值给sc 

或者直接这样写 

 for  idx,sc in  enumerate(score)  : #第一个索引赋值给inx,索引对应的元素值赋值给sc

 for  idx,sc in  enumerate(score,1)  :#第二个参数‘1’表示索引从‘1’开始

for name,score in zip(name,scores):

# zip的作用:表示每次循环分别从name、scores中各拿出一个元素组合成一个元组(78,Alice)

然后赋值给for循环的name,score 

 

python中的同时给两个变量赋值

8 .字典

8.1字典的定义

   dic {key:value}, 如下:‘evan’就是key,这个key可以是字符串,也可以是其它的数据类型,访问字典时像访问数组那样,通过key值作为索引,用len来求字典有多少项。

 key值必须是可以hash的数据类型,而value可以是任意类型

8.2字典的访问

 如果访问字典里不存在的项,直接用索引访问会报错,我们用.get()函数访问不会报错,返回的是空none。

 使用.get()访问一个不存在的项时,会被声明为none,我们可以赋初始值。

8.3  字典里添加新的键值对

scores['jack'] = 90 ,这样就可以了 

删除

del  scores['jack']

hash 哈希 ,可以把 int/float/Bool/str/Tuple元组等类型数据转化为整数,列表【】不能做hash运算

8.4  字典在内存中的访问原理

假设字典d长度为8,d['Mike'] = 23 , 在使用d['Mike']访问时,会先把hash(‘’Mike)的哈希值计算出来,再对长度8求余,得到0--7的余数,然后通过余数来定位d['Mike']指向23,如果有两个key的哈希值相同,那么会在原来字典空的位置拿出来用

 指点不能通过下标在访问,而是用key来访问,因为字典元素的指向哪个对象,是通过哈希值求余来作为索引。

.key() 输出字典的所有key值

.values() 输出key值对应的value

 .items()  输出key - value 对

 

8.5    字典的遍历:

       通过key值遍历,也可以通过value值遍历

 

9. 函数的定义

    def 函数名 (参数列表):

       .................

       .................. 函数内的语句保持相同的缩进

不管什么类型的参数,在 Python 函数中对参数直接使用“=”符号赋值是没用的,直接使用“=”符号赋值并不能改变参数。
如果需要让函数修改某些数据,则可以通过把这些数据包装成列表、字典等可变对象,然后把列表、字典等可变对象作为参数传入函数,在函数中通过列表、字典的方法修改它们,这样才能改变这些数据。

函数作用域:函数内部定义的变量,在函数外部不能使用,但是在if、for等分支语句内定义的变量,在外部是可以访问的。

9.1  函数参数传递 

Python 中函数的参数传递机制都是“值传递”。所谓值传递,就是将实参的副本(复制品)传入给函数的形参,而实参本身不会受到任何影响

主程序中的x相当于一个指针,指向一个列表,x的值就是列表的地址值,函数调用时把列表的地址值传给形参x,所以在函数内部可以对列表元素修改,列表元素x[1]原来指向的是2 ,在函数foobar内部修改了指向100

 当一个不可变的数作为参数传递时,外部的x指向1,x复制一份传给函数的形参x,函数内部x指向1,在函数内部修改了指向2,但外部的x还是指向1的.

python函数形参可以赋默认值,如果不传参,就使用默认值 

 

9.2  函数可变形参

函数参数可以使用可变的参数,*args表示可以使用多个参数,并把这些参数都封装到一个元组里,遍历这个元组就可以访问到参数。 

 

 如果还有不定项参数,还有默认赋值参数,就在形参上写**xxx, **xxx会把有默认值的参数打包成字典,参数名是字典的key值,参数的初始值是字典的value。形参列表的顺序必须是*xx,**xx。

 

 9.3 函数的另一种调用方式:

函数本身是一个对象,让另一个变量指向它,可以用指向它的变量进行调用,类似于c语言的函数指针,如下,变量y(1) ,y指向函数,后面的1传给函数形参

把函数赋值给一个变量,这个变量就有了和这个函数一样的功能

 

函数求导:一个函数作为另一个函数的形参,delta = 1e-6, 一个非常小的数 

 

9.4  函数名封装到列表中,

通过遍历列表调用函数。

 

 9.5  函数作为另一个函数的返回值

 fun1调用时返回的类型是函数,返回的是fun2,a指向fun2,通过a调用函数fun2

还可以使用fun1(3)(5)调用,最终输出结果也是8,这里fun1(3)返回的是一个函数,再给函数传实参(5).

9.6  匿名函数:lambda 

当函数体笔记简单时,直接使用关键字lambda定义:lambda 参数 :函数内容

lambda x:  2 * x  ** 2 +3   与      def func(x):                           效果一样

                                                       return  2 * x  ** 2 +3

 9.7 回调函数

           把函数a作为形参,传递给函数b,函数a就叫做回调函数

9.8 闭包函数 

        函数内部嵌套了一个函数,外部函数的返回值是内部函数,那么这样就构成了闭包。外部函数返回值返回的是函数体,不是函数调用。主要用于装饰器函数。

       

10. 异常处理 

          try :

                可能发生异常的语句放到try内

         except     捕捉异常

         finally     定义在这里的语句,不管有没有异常都会被执行

 这里会出现字符串转化为float异常,Exception as e    创建一个变量e,它指向异常信息

Exception 包含的异常信息有:

ValueError 是包含在Exception中的,如果Exception  pass 了,后面的异常将不会再处理。

 

 函数中有异常处理时,将返回值语句放到try中,放到except中会报错,因在try中报错,x变量未被创建,不能在except中使用。

 

11. 文件操作

11.1 文件打开和读取

使用 open(参数1,参数2,参数3), 参数1:打开的文件路径,字符串类型。

参数2 :表示打开方式,默认是只读'r',可以省略不写

参数3:编码方式  常用encoding = 'utf-8'

写入和读写时的编码方式要一致,注意readline()  和 readlines()的区别。

 在处理文件对象时,最好使用 with 关键字。优点是,子句体结束后,文件会正确关闭,即便触发异常也可以。而且,使用 with 相比等效的 try-finally 代码块要简短得多:

如果没有使用 with 关键字,则应调用 f.close() 关闭文件,即可释放文件占用的系统资源。

11.2  文件的写入     

f = open("doc.txt",'w',encoding='utf-8')

f.write('This is a test\n')    #写入字符串

若打开的路径文件不存在,则创建文件,mode =’w‘ 时,写入数据,会把原来的内容覆盖。mode =’a‘,则是在文件末尾添加数据。

11.3 文件的路径

  绝对路径:本来我们在windows里的文件路径是D:\SoftInstall\Microsoft VS Code\User_py\xxxx,由于python中'\'是转义字符,所有要使用'\\' 才能表示 目录的'\'

 或者像Linux那样使用/..../...../也可以

 相对路径:和Linux中一样 '.'表示当前路径,'..'表示上一层路径

12. 正则表达式

      主要用来检索\替换那些符合某个模式的文本,在python中使用正则表达式借助的是re模块

13. 浅拷贝和深拷贝

    在python中一切皆是对象,变量是对象,数据也是对象,常量也是对象 

   下图中s1和s2同时指向列表对象[10,11,45,67],修改s1或者s2,列表元素都会发生变化,浅拷贝可以解决这个问题

 浅拷贝:引入模块 copy,这里使用copy()复制列表,修改s1时,s2不会发生改变

深拷贝 

当我们复制二维列表时,如下s1的第1个元素是列表,使用copy浅拷贝后s1,s2的第1个元素指向的是同一个列表对象,修改s1[1][0]时,s2的第1个元素列表也会发生改变,解决这个问题,需要深拷贝

 

 14.filter 和map方法

     filter 倾向于对一个对象进行筛选,map对一个对象进行处理

 

 filter返回的是一个filter对象,所以需要对list1强制类型转化为列表,才能输出

 map的使用方法和filter一样

 15. 装饰器函数

      对一个已存在的函数,增加新的功能,通常使用闭包函数,添加的新功能在装饰器函数的内部函数中添加。在内部函数中,先调用已存在的函数,再添加新功能。

 ​​​​​​​

装饰器简写方式,装饰器函数名@outer在上面 

 一个装饰器可以修饰多个函数,还可以多个装饰器修饰一个函数

 16 . 模块介绍和使用

  16.1 模块的介绍

 ​​​​​​​16.2模块的导入方法

          1. import 模块名,直接导入

          2. from random import randint ,导入模块里面的一个方法使用from

 16.4 导入模块,并给它起别名

 直接给模块起别名,给模块里面的一个方法起别名

 16.5  常见模块的使用

         16.5.1 math模块 ​​​​​​​        

         16.5.2 os模块

   import os      os.rmdir('文件夹路径'),只能删除空文件夹

        16.5.3  random模块

         

        16.5.4 datatime模块 

 

         16.5.5 time模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值