第七、八章 函数 + 文件

第七章 函数

多个返回值

def test_return():
	return 1, "hello", True

x,y,z = test_return()
print(x)
print(y)
print(z)
1
hello
True

传入的参数

位置参数

定义:调用函数时根据函数定义的参数位置来传递参数
要求:传递的参数和定义的参数的顺序及个数必须一致

def user_info(name, age, gender):
	print(f"您的名字是{name},您的年龄是{age},您的性别是{gender}")

user_info("Tom", 20, "女")
您的名字是Tom,您的年龄是20,您的性别是女

关键字参数

定义:函数调用时通过“键=值”形式传递参数。

要求:函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序。

def user_info(name, age, gender):
	print(f"您的名字是{name},您的年龄是{age},您的性别是{gender}")

# 可以不按照固定顺序传参
user_info(gender = "女",age = 20, name = "Tom")

# 可以和位置参数混用,位置参数必须在前,且匹配参数顺序
user_info("Tom",gender = "女",age = 20)
您的名字是Tom,您的年龄是20,您的性别是女
您的名字是Tom,您的年龄是20,您的性别是女

缺省参数

定义:缺省参数也叫默认参数,为定义函数的参数提供默认值,调用函数时可不传该默认参数的值

要求:所有位置参数必须出现在默认参数前,包括函数定义和调用

作用:函数调用时,如果为缺省参数传值则修改默认参数值,否则使用这个默认值

def user_info(name, age, gender = "男"):
	print(f"您的名字是{name},您的年龄是{age},您的性别是{gender}")

user_info("Tom", 20)
user_info("Rose", 18, "女")
您的名字是Tom,您的年龄是20,您的性别是男
您的名字是Rose,您的年龄是18,您的性别是女

报错的情况

def user_info(name = "小天", age, gender):
	print(f"您的名字是{name},您的年龄是{age},您的性别是{gender}")

user_info("小黑", 20, "男")

不定长传递

位置传递

定义

def user_info(*args):
	print(f"args的类型是{type(args)},args的内容是{args}")

user_info("小黑")
user_info("男", 20, "Tom")
args的类型是<class 'tuple'>,args的内容是('小黑',)
args的类型是<class 'tuple'>,args的内容是('男', 20, 'Tom')
关键字传递

要求:

def user_info(**kwards):
	print(f"kwards的类型是{type(kwards)},kwards的内容是{kwards}")

user_info(gender = "女",name = "Tom")
kwards的类型是<class 'dict'>,kwards的内容是{'gender': '女', 'name': 'Tom'}

函数作为参数传递

这是一种,计算逻辑的传递,而非数据的传递。
 

# 定义一个函数,接收另一个函数作为传入参数
def test_func(compete):
	result = compete(1, 2)
	print(result)
	
# 定义一个函数,准备作为传入参数传入另一个函数
def compete(x, y):
	return x + y

# 调用,并传入函数
test_func(compete)
3

就像上述代码那样,不仅仅是相加,相见、相除等任何逻辑都可以自行定义并作为函数传入。

lambda匿名函数

说明

定义语法

def test_func(compete):
	result = compete(1, 2)
	print(result)
	
def compete(x, y):
	return x + y

test_func(compete)
test_func(lambda x, y:x + y)
3
3

第八章 文件

文件编码

概念

文件读取

文件操作三步走

(1)打开文件

(2)读写文件

(3)关闭文件

操作

打开文件

f = open("C:/Users/18757/Desktop/love.txt","r", encoding = "UTF-8")
print(type(f))

读文件

read()

f = open("C:/Users/18757/Desktop/love.txt","r", encoding = "UTF-8")


# 读取文件 - read()
print(f"读取10个字节的结果:{f.read(10)}")
print()
print(f"read方法读取全部字节的结果:{f.read()}")
读取10个字节的结果:记住,复试的本质不是

read方法读取全部字节的结果:一场考试,
而是一场自我展示!
你应该做的是,
在这短短的二十分钟时间内,
尽可能地展现出自己的优势,
让老师对你感兴趣!

readlines()

f = open("C:/Users/18757/Desktop/love.txt","r", encoding = "UTF-8")

# 读取文件 - readlines()
lines = f.readlines() # 读取文件的全部行,每一行作为一个元素,封装到列表中
print(f"lines对象的类型:{type(lines)}")
print(f"lines对象的内容:{lines}")
lines对象的类型:<class 'list'>
lines对象的内容:['记住,复试的本质不是一场考试,\n', '而是一场自我展示!\n', '你应该做的是,\n', '在这短短的二十分钟时间内,\n', '尽可能地展现出自己的优势,\n', '让老师对你感兴趣!']

readline()

f = open("C:/Users/18757/Desktop/love.txt","r", encoding = "UTF-8")

# 读取文件 - read()
line1 = f.readline()
line2 = f.readline()
line3 = f.readline()
print(f"第一行数据是:{line1}")
print(f"第二行数据是:{line2}")
print(f"第三行数据是:{line3}")
第一行数据是:记住,复试的本质不是一场考试,

第二行数据是:而是一场自我展示!

第三行数据是:你应该做的是,

for循环读取行
f = open("C:/Users/18757/Desktop/love.txt","r", encoding = "UTF-8")

# for循环读取行
for line in f:
    print(f"每一行数据是:{line}")
每一行数据是:记住,复试的本质不是一场考试,

每一行数据是:而是一场自我展示!

每一行数据是:你应该做的是,

每一行数据是:在这短短的二十分钟时间内,

每一行数据是:尽可能地展现出自己的优势,

每一行数据是:让老师对你感兴趣!

close()

f = open("C:/Users/18757/Desktop/love.txt","r", encoding = "UTF-8")


for line in f:
    print(f"每一行数据是:{line}")
# 关闭文件
f.close()
每一行数据是:记住,复试的本质不是一场考试,

每一行数据是:而是一场自我展示!

每一行数据是:你应该做的是,

每一行数据是:在这短短的二十分钟时间内,

每一行数据是:尽可能地展现出自己的优势,

每一行数据是:让老师对你感兴趣!

另注:for循环结束后会自动关闭文件

import time

f = open("C:/Users/18757/Desktop/love.txt","r", encoding = "UTF-8")

# for循环结束后会自动关闭文件
for line in f:
    print(f"每一行数据是:{line}")
time.sleep(1000)

在1000秒内可以打开文件不受影响,说明文本文档已经关闭了

课后练习

写文件

f = open("C:/Users/18757/Desktop/love.txt","w", encoding = "UTF-8")

f.write("Hello World!!!")	# 内容写入到内存中
f.flush()					# 将内存中积攒的内容,写入到硬盘的文件中
f.close()					# close方法,内置了flush的功能的

f = open("C:/Users/18757/Desktop/love.txt","w", encoding = "UTF-8")

f.write("黑马程序员!!!")	# 内容写入到内存中
f.close()				# close方法,内置了flush的功能的

追加写入

f = open("C:/Users/18757/Desktop/love.txt","a", encoding = "UTF-8")

f.write("学python最佳选择")
f.close()

f = open("C:/Users/18757/Desktop/love.txt","a", encoding = "UTF-8")

f.write("\n月薪过万")
f.close()

案例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/554299.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1.C++入门

1.关键字&#xff08;C98&#xff09; 2.命名空间 在 C/C 中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存 在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是 对标识符的名称进行本地化 &#xff…

利用 Amazon ECS 进行分布式机器学习

本文作者 Santiago Flores Kanter 亚马逊云科技高级解决方案架构师 Ravi Yadav 亚马逊云科技首席容器专家 校译作者 梁宇 亚马逊云科技专业服务团队 DevOps 顾问 在 Amazon ECS 服务上运行分布式机器学习工作负载可让 ML 团队更加专注于创建、训练和部署模型&#xff0c;而不是…

搭建PyTorch神经网络进行气温预测(手写+调包两种方法)(保证学会!)+找到神经网络的最优情况

代码上有注释&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 本篇主要包括三大部分&#xff1a; 第一部分&#xff1a;导入数据集导入第三方库数据集简单介绍与可视化数据集简单预处理 第二部分&#xff1a;手写神经网络代码实现气温预测&#…

链表传一级指针以及leetcode做题有感

上个文章说要传二级指针&#xff0c;经过一段时间的学习之后才知道可以传一级指针&#xff1a; 之所以要传二级指针&#xff0c;是要改变一级指针的值&#xff0c;也就是把头节点的指针改变&#xff0c;如图&#xff1a; 从左边到右边&#xff0c;头指针 一级指针plist 的值发…

C++算法题 - 哈希表

目录 383. 赎金信205. 同构字符串290. 单词规律242. 有效的字母异位词49. 字母异位词分组1. 两数之和202. 快乐数219. 存在重复元素Ⅱ128. 最长连续序列 383. 赎金信 LeetCode_link 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 m…

道合顺传感新品上市!高性能氢气传感器DSB14-G3K-J详解

道合顺传感高性能氢气传感器DSB14-G3K-J正式发布&#xff01;超强抗干扰能力优势明显。应对氢气安全挑战、高性能氢气传感器国产化、为储能保驾护航。 氢气&#xff0c;作为现今能源领域中的新贵&#xff0c;在储能行业中应用广泛且备受瞩目。但氢气易燃、易爆特性使其在生产、…

gradle.properties 中文字符乱码问题

我用AS开发Android应用。在gradle.properties中输入中文&#xff0c;再次打开时&#xff0c;发现中文变成了&#xff1f;&#xff1f;&#xff1f;。上网查询&#xff0c;发现了一个解决办法&#xff1a; 在菜单File-Settings-Editor-File Encodings中&#xff0c;将“Default…

【复习笔记】FreeRTOS(五)时间片调度

本文是FreeRTOS复习笔记的第五节&#xff0c;时间片调度。 上一篇文章&#xff1a; 【复习笔记】reeRTOS(四) 列表项的插入和删除 文章目录 1.时间片调度简介1.1. 运行过程 二、实验设计三、测试例程四、实验效果 1.时间片调度简介 FreeRTOS支持多个任务同时拥有一个优先级&am…

春藤实业启动SAP S/4HANA Cloud Public Edition项目,与工博科技携手数字化转型之路

3月11日&#xff0c;广东省春藤实业有限公司&#xff08;以下简称“春藤实业”&#xff09;SAP S/4HANA Cloud Public Edition&#xff08;以下简称“SAP ERP公有云”&#xff09;项目正式启动。春藤实业董事长陈董、联络协调项目经理慕总、内部推行项目经理陈总以及工博董事长…

数仓建模—数据架构

数仓—数据架构 为了在企业决策中使用数据,数据必须经过整个数据平台的各个阶段。整个过程是什么样子的,从开始到结束?原始形式的数据是如何转化为可导致商业决策的见解的?这些问题可以通过数据架构来回答。 数据架构是指记录组织所有数据资产的模型、规则和标准。它映射…

Web前端-JavaScript

黑马程序员JavaWeb开发教程 文章目录 一、js引入方式1、内部脚本2、外部脚本 二、js基础语法1、书写语法&#xff08;1&#xff09;基本语法&#xff08;2&#xff09;输出语句 2、变量&#xff08;1&#xff09;变量&#xff08;2&#xff09;注意事项 3、数据类型、运算符、流…

spring-数据处理及跳转

结果跳转方式 ModelAndView 设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面 . 页面 : {视图解析器前缀} viewName {视图解析器后缀} <!-- 视图解析器 --> <bean class"org.springframework.web.servlet.view.InternalResourceViewRes…

Java定时任务

一、java.util.Timer java.util.Timer 类允许您在未来的某个时间执行一个任务&#xff0c;或者在一定的时间间隔执行任务。您可以创建一个 Timer 实例&#xff0c;并调用其 schedule() 方法来安排任务的执行。这种方式比较简单&#xff0c;但在高并发环境下可能不够灵活。 1.…

Git学习与码云实战

Git学习与码云实战 Git安装 概述&#xff1a; Git 是一个开源的分布式版本控制系统&#xff0c;可以有效、高速的处理从很小到非常大的项目版本管理&#xff0c;是目前使用范围最广的版本管理工具。 下载安装&#xff1a; 下载地址&#xff1a;https://git-scm.com/ 下载后傻瓜…

李彦宏:开源模型会越来越落后

李彦宏&#xff1a;开源模型会越来越落后 昨天听完的李总讲座 大家以前用开源觉得开源便宜&#xff0c;其实在大模型场景下&#xff0c;开源是最贵的。所以&#xff0c;开源模型会越来越落后。 ——李彦宏 至于开源还是闭源&#xff0c;这和企业的利益息息相关。 随着科技的迅猛…

双向链表详解

一.双向链表结构 我们一般所说的双向链表是带头循环双向链表&#xff0c;这里的带头更我们之前的头节点不是一回事。带头链表里的头节点&#xff0c;实际上为哨兵位&#xff0c;哨兵位的头节点种是不存放任何有效数据的&#xff0c;只是站在这里起到放哨的作用。 哨兵位的意义…

【C++从练气到飞升】08---模板

&#x1f388;个人主页&#xff1a;库库的里昂 ✨收录专栏&#xff1a;C从练气到飞升 &#x1f389;鸟欲高飞先振翅&#xff0c;人求上进先读书。 目录 一、泛型编程 什么是泛型编程: 二、函数模板 1. 函数模板概念 2. 函数模板格式 3. 函数模板的原理 4. 函数模板的实例…

Nginx part2.2

目录 如何用Nginx搭建多网址服务器&#xff1f; 基于ip地址的虚拟主机 1. 先建立存储网页的目录 2.进行子配置 3.编写.conf文件 基于端口号的虚拟主机 基于域名的虚拟主机 如何用Nginx搭建多网址服务器&#xff1f; 有些网站&#xff0c;ip不同&#xff0c;域名不同&…

格林兰岛和南极洲的流域边界文件下载

&#xff08;1&#xff09;南极流域系统边界和掩蔽区 下图显示了由戈达德冰面高程小组使用ICESat数据开发的南极分水岭。我们对西南极冰盖&#xff08;系统18-23和1&#xff09;、东南极冰盖&#xff08;系统2-17&#xff09;和南极半岛&#xff08;系统24-27&#xff09;的定…

案例与脚本实践:DolphinDB 轻量级实时数仓的构建与应用

DolphinDB 高性能分布式时序数据库&#xff0c;具有分布式计算、事务支持、多模存储、以及流批一体等能力&#xff0c;非常适合作为一款理想的轻量级大数据平台&#xff0c;轻松搭建一站式的高性能实时数据仓库。 本教程将以案例与脚本的方式&#xff0c;介绍如何通过 Dolphin…
最新文章