menu ChaYedan
Python基础知识(二)
457 浏览 | 2020-01-16 | 阅读时间: 约 5 分钟 | 分类: Python | 标签: Python
请注意,本文编写于 987 天前,最后修改于 831 天前,其中某些信息可能已经过时。

公共方法

  • 运算符
运算符Python 表达式结果描述支持的数据类型
+[1, 2] + [3, 4][1, 2, 3, 4]合并字符串、列表、元组
*['Hi!'] * 4['Hi!', 'Hi!', 'Hi!', 'Hi!']复制字符串、列表、元组
in3 in (1, 2, 3)True元素是否存在字符串、列表、元组、字典
not in4 not in (1, 2, 3)True元素是否不存在字符串、列表、元组、字典
  • python内置函数
序号方法描述
1cmp(item1, item2)比较两个值
2len(item)计算容器中元素个数
3max(item)返回容器中元素最大值
4min(item)返回容器中元素最小值
5del(item)删除变量

函数

定义

def 函数名():
    代码

调用

# 定义完函数后,函数是不会自动执行的,需要调用它才可以
printInfo()

注释

写在函数定义的下面一行

参数

写在括号里面

返回值

用return返回函数处理的结果

备注:

Python中的函数没有重载的概念,即函数只能有一个

返回多个值:会使用元组返回

局部变量

在函数中定义的变量就是局部变量,只能在函数内部使用。

全局变量

在函数外面定义的变量

如果要在函数内部修改全局变量:

  1. 先声明全局变量:使用global,例如global a
  2. 修改值

函数之间共享数据则必须是全局变量

默认参数

跟C++的默认参数一致

关键字参数

即不按照函数参数列表的顺序传参

def add(a, b, c):
    print(a)
    print(b)
    print(c)


add(b=30, a=20, c=50)

关键字参数只能写在形参列表最后

add(50, a=20, c=50)

可变参数(不定长参数)

即函数的参数列表的长度不一定,在形参前面加一个*,这个参数就叫可变参数,表示0或任意个形参。

可变参数的类型是元组

def add(*args):
    print(*args)  # 会进行解包
    print(args)  # 得到传进来参数的元组
    print(type(args))  # args是元组类型

关键字参数的可变参数

必须放到形参列表的最后

def add(**kwargs):
    print(*kwargs)  # 打印key值
    print(kwargs)  # 得到传进来参数的字典
    print(type(kwargs))  # 是字典类型


add(m=10, n=20)

解包和组包

组包:
把多个数据放到一个容器

开发中,只能对元组进行组包,不能对字典进行组包。但解释器可以自动组包元组和字典。

tuple1=10, 20
print(tuple1)

解包:
把容器中的数据解出来,但其中对字典直接解包只能解出Key

a, b = (10, 20)

要求左边的变量数目与元组中的数据数目相同

应用:

  • 交换两个变量的值

    a, b = b, a

拓展:

打印变量地址id(变量名)

函数传递的实质

python中只有引用传递没有值传递

匿名函数

没有函数名的函数

定义格式
变量名 = lambda [形参1], [形参2], ... : [单行表达式] 或 [函数调用]

返回值是单行表达式的结果或者调用其他函数得到的返回值

调用则通过变量名调用,格式:变量名(实参1,实参2,...)

与普通函数的区别
  1. 匿名函数中不能使用 if 语句、while 循环、for 循环, 只能编写单行的表达式,或函数调用, 普通函数都可以.
  2. 匿名函数中返回结果不需要使用 return, 表达式的运行结果就是返回结果, 普通函数返回结果必须 return.
  3. 匿名函数中也可以不返回结果. 例如: lambda : print('hello world')

高阶函数

  • map函数

map() 会根据提供的函数对指定序列做映射.

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表.

例如:计算每一个元素的平方值:

my_list = [1, 2, 3, 4, 5]


def f(x):
    return x ** 2


result = map(f, my_list)
print(type(result), result, list(result))

输出结果:

<class 'map'> <map object at 0x000000C9729591D0> [1, 4, 9, 16, 25]
  • reduce函数

reduce() 函数会对参数序列中元素进行累计.

函数将一个数据集合中的所有数据进行下列操作:

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

使用时需要导入fuctools包

例如:计算列表中的累加和

import functools

my_list = [1, 2, 3, 4, 5]


def f(x1, x2):
    return x1 + x2


result = functools.reduce(f, my_list)
print(result)

输出结果:

15
  • filter函数

filter() 函数用于过滤序列, 过滤掉不符合条件的元素, 返回一个 filter 对象, 如果要转换为列表, 可以使用 list() 来转换.

该接收两个参数, 第一个为函数, 第二个为序列, 序列的每个元素作为参数传递给函数进行判, 然后返回 True 或 False, 最后将返回 True 的元素放到新列表中.

例如:过滤列表中的偶数:

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


def f(x):
    return x % 2 == 0


result = filter(f, my_list)
print(list(result))

输出结果:

[2, 4, 6, 8, 10]

Set集合

也是一个容器,可以存储多个数据,可以是任意类型。底层用哈希表存储

没有索引,且集合中不能存储重复元素,自动去重,重复的元素只保留一个

定义格式

set集合名={元素1,元素2,...}

文件

写数据(write)

使用write()可以完成向文件写入数据

demo: 新建一个文件 file_write_test.py,向其中写入如下代码:

f = open('test.txt', 'w')
f.write('hello world, i am here!')
f.close()

运行之后会在file_write_test.py文件所在的路径中创建一个文件test.txt

注意:

  • 如果文件不存在那么创建,如果存在那么就先清空,然后写入数据

读数据(read)

使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据

demo: 新建一个文件file_read_test.py,向其中写入如下代码:

f = open('test.txt', 'r')
content = f.read(5)  # 最多读取5个数据
print(content)

print("-"*30)  # 分割线,用来测试

content = f.read()  # 从上次读取的位置继续读取剩下的所有的数据
print(content)

f.close()  # 关闭文件,这个可以是个好习惯哦

运行现象:

hello
------------------------------
 world, i am here!

注意:

  • 如果用open打开文件时,如果使用的"r",那么可以省略,即只写 open('test.txt')

文件正确打开了才需要close,即open执行了才close,如果open失败,则不需要

读取的方式:
  • 读几个字符(read(n))
  • 一次读一行(readline())
  • 一次读取所有字符(read())
  • 按行读取所有行(readlines()):返回的是列表

文件的访问模式

访问方式说明
r只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式。如果文件不存在,抛出异常
w只写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件
a追加方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入
r+读写方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,抛出异常
w+读写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件
a+读写方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入

相关函数

name属性可以得到open后的文件对象的路径(绝对路径,字符串类型)

有些时候,需要对文件进行重命名、删除等一些操作,python的os模块中都有这么功能

1. 文件重命名

os模块中的rename()可以完成对文件的重命名操作

rename(需要修改的文件名, 新的文件名)

import os
os.rename("毕业论文.txt", "毕业论文-最终版.txt")

2. 删除文件

os模块中的remove()可以完成对文件的删除操作

remove(待删除的文件名)

import os
os.remove("毕业论文.txt")

3. 创建文件夹

import os
os.mkdir("张三")

4. 获取当前目录

import os
os.getcwd()

5. 改变默认目录

import os
os.chdir("../")

6. 获取目录列表

import os
os.listdir("./")

7. 删除文件夹

import os
os.rmdir("张三")
知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

发表评论

email
web

全部评论 (暂无评论)

info 还没有任何评论,快来留言吧!