tags: [笔记, Python语法]
categories: [笔记, Python语法]
declare: true
reward: true


相关配置

  1. from IPython.core.interactiveshell import InteractiveShell
  2. InteractiveShell.ast_node_interactivity = "all"

Python “=”赋值、浅拷贝copy()和深度拷贝deepcopy()区别

在帖子中,还未整理https://blog.csdn.net/u011630575/article/details/78604226

Python3 range() 函数用法

range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。

Python3 list() 函数是对象迭代器,可以把range()返回的可迭代对象转为一个列表,返回的变量类型为列表。Python2 range() 函数返回的是列表。

函数语法
range(stop)
range(start, stop[, step])
参数说明:

start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);

stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5

step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

  1. list(range(5))
  2. list(range(0, 5))
  3. list(range(0))
  1. [0, 1, 2, 3, 4]
  2. [0, 1, 2, 3, 4]
  3. []

Python3 zip() 函数

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。

我们可以使用 list() 转换来输出列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

zip 语法:zip([iterable, …])

参数说明:

iterabl — 一个或多个迭代器;

返回值:返回一个对象。

  1. import numpy as np
  2. a = [1,2,3]
  3. b = [4,5,6]
  4. c = [4,5,6,7,8]
  5. zipped = zip(a,b) # 返回一个对象
  6. zipped
  7. list(zipped) # list() 转换为列表
  8. list(zip(a,c)) # 元素个数与最短的列表一致
  9. a1, a2 = zip(*list(zip(a,b))) # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
  10. type(a1)
  11. list(a1)
  12. list(a2)
  13. c = [[1,2,3],
  14. [4,5,6]]
  15. d = [[7,8,9],
  16. [10,11,12]]
  17. list(zip(c,d))
  18. len(list(zip(c,d)))
  1. <zip at 0x271224dfd80>
  2. [(1, 4), (2, 5), (3, 6)]
  3. [(1, 4), (2, 5), (3, 6)]
  4. tuple
  5. [1, 2, 3]
  6. [4, 5, 6]
  7. [([1, 2, 3], [7, 8, 9]), ([4, 5, 6], [10, 11, 12])]
  8. 2

Python strip()方法

Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。

注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。

strip()语法:str.strip([chars]);

  1. str = "00000003210Runoob01230000000"
  2. print(str.strip( '0' )) # 去除首尾字符 0
  3. str2 = " Runoob " # 去除首尾空格
  4. print(str2.strip())
  1. 3210Runoob0123
  2. Runoob

Python3 split()方法

split() 语法:str.split(str=””, num=string.count(str))

split() 通过指定分隔符对字符串进行切片,如果第二个参数 num 有指定值,则分割为 num+1 个子字符串。

参数:1. str — 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。2. num — 分割次数。默认为 -1, 即分隔所有。

返回值: 返回分割后的字符串列表。

  1. str = "this is string example....wow!!!"
  2. print(str.split( )) # 以空格为分隔符
  3. print(str.split('i',1)) # 以 i 为分隔符
  4. print(str.split('w')) # 以 w 为分隔符
  1. ['this', 'is', 'string', 'example....wow!!!']
  2. ['th', 's is string example....wow!!!']
  3. ['this is string example....', 'o', '!!!']

jupyter中运行.py文件

%load test.py #载入test.py中的代码,相当于导包。再点击Run运行,这种方法的好处是可以方便修改代码。
%run test.py #直接运行得出结果。
说明:
Jupyter Notebook中以%开头的代码为魔法函数
其中:
%run 调用外部python脚本
%load 加载本地文件

Python中 is的用法

is函数比==要快一些,不用运行查找和比较函数,所以判断变量或对象是否为None用is最好

  1. val=1
  2. print(val is not None)
  3. print(val != None)
  1. True
  2. True

Python3 错误和异常(Raise和Assert)

1、Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。
2、抛出异常 Raise:raise语法格式 raise [Exception [, args [, traceback]]]
3、异常处理 try/except:首先,执行 try 子句(在关键字 try 和关键字 except 之间的语句)。
如果没有异常发生,忽略 except 子句,try 子句执行后结束。
如果在执行 try 子句的过程中发生了异常,那么 try 子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的 except 子句将被执行。
如果一个异常没有与任何的 except 匹配,那么这个异常将会传递给上层的 try 中。
注:一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。
处理程序将只针对对应的 try 子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。
一个except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组,

python函数参数中*的用法

1、出现在函数参数中第一种含义可以表示为可变参数,一般写作_args;
2、对于单独出现在参数中的
参数,则表示,_后面的参数必须为关键字参数的形式,接下来详细说下该用法:
如果你希望强迫调用者使用某些参数,且必须以关键字参数的形式传参,那么你只需要在所需位置的前一个位置放置一个
def f1(a,
, b, c):
  return a + b + c
对于上面这个函数而言,调用时参数a可以任意值, 但b,c参数一定要以关键字参数的形式传参,如f1(1, b=4, c=5),否则将会报错。

argparse模块用法——命令行参数

action参数

用argparse模块让python脚本接收参数时,对于True/False类型的参数,可以向add_argument方法中加入参数action=‘store_true’/‘store_false’。
顾名思义,store_true就代表着一旦有这个参数,做出动作“将其值标为True”,也就是没有时,默认状态下其值为False。反之亦然,store_false也就是默认为True,一旦命令中有此参数,其值则变为False。

  1. import argparse
  2. parser = argparse.ArgumentParser()
  3. parser.add_argument('--foo', action='store_true')
  4. parser.add_argument('--bar', action='store_false')
  5. parser.add_argument('--baz', action='store_false')
  6. parser.parse_args('--foo --bar'.split())
  1. Namespace(bar=False, baz=True, foo=True)

shutil模块

shutil.rmtree()

递归地删除文件,如果存在以下树结构

  • user
      - tester
       - noob
      - developer
       - guru
  1. import shutil
  2. # shutil.rmtree(r'user\tester') #删除tester文件夹内的所有文件(包括tester本身)

shutili模块其他函数

  • shutil.copyfile( src, dst) #从源src复制到dst中去。 如果当前的dst已存在的话就会被覆盖掉
  • shutil.move( src, dst) #移动文件或重命名
  • shutil.copymode( src, dst) #只是会复制其权限其他的东西是不会被复制的
  • shutil.copystat( src, dst) #复制权限、最后访问时间、最后修改时间
  • shutil.copy( src, dst) #复制一个文件到一个文件或一个目录
  • shutil.copy2( src, dst) #在copy上的基础上再复制文件最后访问时间与修改时间也复制过来了,类似于cp –p的东西
  • shutil.copy2( src, dst) #如果两个位置的文件系统是一样的话相当于是rename操作,只是改名;如果是不在相同的文件系统的话就是做move操作
  • shutil.copytree( olddir, newdir, True/Flase) #把olddir拷贝一份newdir,如果第3个参数是True,则复制目录时将保持文件夹下的符号连接,如果第3个参数是False,则将在复制的目录下生成物理副本来替代符号连接
  • shutil.rmtree( src ) #递归删除一个目录以及目录内的所有内容

f-字符串(f-string)

格式化的字符串字面值(简称为f-字符串),是在字符串的开始引号之前加上一个f或F。在这样的字符串中,我们可以在花括号{}中引用变量或Python表达式。

花括号{}里面的表达式可以有一些格式说明符,它们用来更好的控制值的格式化方式。比如下面这个例子,将浮点数保留到小数点后三位:

Python中join函数和os.path.join用法

join:连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
os.path.join(): 将多个路径组合后返回

  1. import os
  2. #join():‘sep’.join(seq) #sep:分隔符;seq:序列
  3. seq = ['hello','liyan','chenhaishun']
  4. print('/'.join(seq))
  5. print(os.path.join('home', "me", "mywork"))
  6. print(os.path.join('home/', "me/", "mywork"))
  1. hello/liyan/chenhaishun
  2. home\me\mywork
  3. home/me/mywork

Python format 格式化函数

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
基本语法是通过 {} 和 : 来代替以前的 % 。
format 函数可以接受不限个参数,位置可以不按顺序。

  1. print("{} {}".format("hello", "world")) # 不设置指定位置,按默认顺序
  2. print("{0} {1}".format("hello", "world")) # 设置指定位置
  3. print("{1} {0} {1}".format("hello", "world")) # 设置指定位置
  1. hello world
  2. hello world
  3. world hello world
  1. # 也可以设置参数:
  2. print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))
  3. # 通过字典设置参数
  4. site = {"name": "菜鸟教程", "url": "www.runoob.com"}
  5. print("网站名:{name}, 地址 {url}".format(**site))
  6. # 通过列表索引设置参数
  7. my_list = ['菜鸟教程', 'www.runoob.com']
  8. print("网站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必须的
  1. 网站名:菜鸟教程, 地址 www.runoob.com
  2. 网站名:菜鸟教程, 地址 www.runoob.com
  3. 网站名:菜鸟教程, 地址 www.runoob.com