day10上节内容补充和初始函数
1.上节内容补充
文件的删除和修改:
#文件的删除和修改
#文件中全部都要修改
# with open('歌词',encoding='utf-8') as f1,open('歌词.bak','w',encoding='utf-8') as f2:
# for line in f1:
# new_line = line.replace('呢','呀')
# f2.write(new_line)
# import os
# os.remove('歌词')
# os.rename('歌词.bak','歌词')
#第二种 某一行要修改 比如第一个出现呢的行
with open('歌词',encoding='utf-8') as f1,open('歌词.bak','w',encoding='utf-8') as f2:
flag = True # count = 0
for line in f1:
if '呀' in line and flag: # if '呀' in line and coun==0
new_line = line.replace('呀','呢')
f2.write(new_line)
flag = False # count+=1
else:
f2.write(line)
import os # 文件的删除接触windows系统的删除 用到了模块
os.remove('歌词')
os.rename('歌词.bak','歌词')
文件操作with 体的使用可避免忘记f.close
with open('a.txt','w') as f:
pass
with open('a.txt','r') as read_f,open('b.txt','w') as write_f:
data=read_f.read()
write_f.write(data)
二、初始函数
为什么要使用函数
#1、代码的组织结构不清晰,可读性差 #2、遇到重复的功能只能重复编写实现代码,代码冗余 #3、功能需要扩展时,需要找出所有实现该功能的地方修改之,无法统一管理且维护难度极大
#什么是函数:
很明显内置函数所能提供的功能是有限的,这就需要我们自己根据需求,事先定制好我们自己的函数来实现某种功能,以后,在遇到应用场景时,调用自定义的函数即可。
#函数的格式:
def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":"。
def 是固定的,不能变,必须是连续的def三个字母,不能分开。。。它们要相亲相爱的在一起。
空格 为了将def关键字和函数名分开,必须空(四声),当然你可以空2格、3格或者你想空多少都行,但正常人还是空1格。
函数名:函数名只能包含字符串、下划线和数字且不能以数字开头。虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并能表达函数功能
括号:是必须加的,先别问为啥要有括号,总之加上括号就对了!
注释:每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行。以增强代码的可读性。
调用:就是 函数名() 要记得加上括号,好么好么好么
例如:
def hell():
print('hell,word!)
hell() #hell,word!
函数的返回值
#返回值:
# 没有返回值:
# 不写return == return None
# 只写一个return == return None
# return的作用:1.返回一个值 2.终止一个函数的继续 # 返回一个值: 可以返回任意的数据类型。返回什么 就接受什么 # 返回多个值:
# 用一个变量接收返回值,接收到的是一个元组
# 返回值有多个变量接收,那么返回值的个数应该和接收变量的个数完全一致
def f1():
return 1,2,3,4
l = f1()
print(l) # (1, 2, 3, 4)
a,b,c,d = f1()
print(a) #
print(b) #
print(c) #
print(d) #
参数 形参》》位置参数,关键字参数(默认函数) 》》实参 按位置传,按关键字传
# 参数
# 形参和实参
# 传参数可以传任意的数据类型,并且传什么,接受什么
# 站在传参数的角度上看问题:一共有两种传参的方式
# 第一种:按照位置传参数
# 第二种:按照关键字传参数 # def f(para):
# print(para)
#
# f(para = 1) #传多个参数:多个参数分别可以使用任意数据类型
def f2(arg1,arg2,arg3): #站在接受、形参的角度上:位置参数
print(arg1)
print(arg2,arg3) #f2('abc',arg1 = [1,23]) #报错 已经传过了
#f2('abc',arg2 = [1,23]) # 报错,缺少一个参数
f2(arg3 = 1,arg2 = 2,arg1 = 3)#如果第一个实参是关键字那么后边的参数必须都是关键字
#按照关键字传参数和按照位置传参数是可以混用的
#但是,首先传按位置的,再传按关键字的
#按照位置传完该接受的参数只能接受一个值,不接受或者重复接收都不想
#形参
#位置参数
#数量必须与实参数量一致 ==> 必须传的参数 def classmate(name,sex='男'):
print('姓名:%s,性别%s'%(name,sex)) classmate('尤悦')
classmate('曹超')
classmate('张建超')
classmate('晓梅','女') #默认参数:
#默认参数 是可以不传的参数
#在不传参数的情况下可以使用默认的值
#如果传了,就会使用传的值
def foo(x, y, *args, a=1, b, **kwargs):
print(x, y)
print(args)
print(a)
print(b)
print(kwargs)
foo(1, 2, 3, 4, 5, b=3, c=4, d=5)
# 结果:
#
#
# (3, 4, 5)
#
#
# {'c': 4, 'd': 5}
默认参数的魔性用法 (默认参数一般都要选择不变的值)
# #魔性的用法:默认参数尽量避免使用可变数据类型
# def func(l = []):
# l.append(1)
# print(l)
# func() #[1]
# func() #[1,1]
lst = []
def func(l = lst):
l.append(1)
print(l)
func([]) #[1]
func([]) #[1] 用[]传参,就会重新赋值
#我们可以用None这个不变对象来实现:
def add_end(L=None):
if L is None:
L = []
L.append('END')
return L
day10上节内容补充和初始函数的更多相关文章
- Python之路第一课Day8--随堂笔记(socket 承接上节---网络编程)
本节内容 Socket介绍 Socket参数介绍 基本Socket实例 Socket实现多连接处理 通过Socket实现简单SSH 通过Socket实现文件传送 作业:开发一个支持多用户在线的FTP程 ...
- Detours简介 (拦截x86机器上的任意的win32 API函数)
Detours 当然是用detours,微软明显高腾讯一筹,同上,至今没失败过.写这种HOOK一定要再写个测试程序,不要直接HOOK你的目的程序,例如QQ,因为这样不方面更灵活的测试.说明一下:Det ...
- day 09初始函数
# with open('小护士班主任',encoding='utf-8') as f,open ('小护士班主任.bak','w',encoding='utf-8')as f2: # for lin ...
- python 全栈开发,Day93(vue内容补充,VueX)
昨日内容回顾 1. 页面的布局 Vue中使用Bootstrap搭页面 1. 安装 1. npm install bootstrap@3.3.7 -S 2. 使用 1. import 'bootstra ...
- 2017-2018-1 20155232 《信息安全系统设计基础》第四周学习总结以及课上myod练习补充博客
2017-2018-1 20155232 <信息安全系统设计基础>第四周学习总结以及课上myod练习补充博客 课上myod练习 1 参考教材第十章内容 2 用Linux IO相关系统调用编 ...
- Python开发基础-Day11内置函数补充、匿名函数、递归函数
内置函数补充 python divmod()函数:把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b) 语法: divmod(a, b) #a.b为数字,a为除数,b ...
- python基础之内置函数补充、匿名函数、递归函数
内置函数补充 python divmod()函数:把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b) 语法: 1 divmod(a, b) #a.b为数字,a为除数 ...
- Egret入门学习日记 --- 第五篇(书中 3.5节 内容)
第五篇(书中 3.5节 内容) 今天得把昨天的问题解决了才行. 去了Q群,碰到一位大大,他给我解惑了.Thanks♪(・ω・)ノ 这是我之前按照书上写的方式写的,并没有效果. 然后大大给我解答了: 后 ...
- Python基础篇(初始函数)
Python初始函数: 一.什么是函数 1.我们到目前为止, 已经可以完成一些软件的基础功能了. 那么我们来完成这样一个功 能: 约x: print("拿出手机") print(& ...
随机推荐
- Linux 动态库 静态库
什么是库 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.由于windows和Linux的本质不同,因此二者库的二进制是不兼容的.Linux操作系统支持的库函数分为静态库和动态库 ...
- Less资源汇总
GUI编译工具 为方便起见,建议初学者使用GUI编译工具来编译.less文件,以下是一些可选GUI编译工具: koala(Win/Mac/Linux) 国人开发的LESSCSS/SASS编译工具.下载 ...
- Spark Streaming on Kafka解析和安装实战
本课分2部分讲解: 第一部分,讲解Kafka的概念.架构和用例场景: 第二部分,讲解Kafka的安装和实战. 由于时间关系,今天的课程只讲到如何用官网的例子验证Kafka的安装是否成功.后续课程会接着 ...
- [Linux]屏幕输出控制
专门的术语叫做ANSI Escape sequences(ANSI Escape codes),题目并不恰当,与其说是屏幕输出控制,不如说是通过bash在兼容VT100的终端上进行输出. 主要有以下类 ...
- 在线安装eclipse中html/jsp/xml editor插件 eclipseeditor
1.打开eclipse中的help————>Install New Software 2.点击Add按钮,然后弹出一个框,第一个文本框可以随便写,第二个一定要写: http://download ...
- TreeView 拖拽 增删改
using Endv.Tools; using System; using System.Data; using System.Drawing; using System.IO; using Syst ...
- $ gulp watch 运行出错解决方法
$ gulp watch 运行出错解决方法 $ gulp watch 如果你出现了如下报错信息: gulp-notify: [Laravel Elixir] Browserify Fail ...
- Mybatis(三):MyBatis缓存详解
MyBatis缓存分为一级缓存和二级缓存 一级缓存 MyBatis的一级缓存指的是在一个Session域内,session为关闭的时候执行的查询会根据SQL为key被缓存(跟mysql缓存一样,修改任 ...
- MyBatis官方教程及源代码解析——mapper映射文件
缓存 1.官方文档 MyBatis 包括一个非常强大的查询缓存特性,它能够非常方便地配置和定制. MyBatis 3 中的缓存实现的非常多改进都已经实现了,使得它更加强大并且易于配置. 默认情况下是没 ...
- QT学习二:工具栏
QT 的工具栏提供 Dock 功能.文字/图标显示排列的功能. void MainWindow::createToolBar(void) { QToolBar *toolBar = new QToo ...