python学习日记(函数基础)
修改文件(原理)--回顾
#修改文件(原理)
with open('name','r',encoding='utf-8') as f,\
open('password','w+',encoding='utf-8') as f1:
for line in f:
if '开始' in line:
line = line.replace('开始','千字文')#替换字符
f1.write(line)
f1.seek(0)
print(f1.read())
#import后续再详解
import os
os.remove('name')#删除'name'文件
os.rename('password','name')#重命名
函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。
python提供了许多内建函数,也可以自己创建函数,这叫做用户自定义函数。
自定义函数
简单调用
s = '天地玄黄'
def my_len():#定义函数名
count = 0
for i in s:
count += 1
print(count)
my_len()#调用函数
1、没有返回值--返回None
①、不写return
s = '天地玄黄'
def my_len():#定义函数名
count = 0
for i in s:
count += 1
print(count)
l = my_len()
print(l)
②、只写return
s = ['天地玄黄','','宇宙洪荒']
def my_out():#定义函数名
for i in s:
if i == '':
return#直接结束了一个函数的继续
print(i)
l = my_out()
print(l)
③、return None
s = ['天地玄黄','','宇宙洪荒']
def my_out():#定义函数名
for i in s:
if i == '':
return None#return直接结束了一个函数的继续
print(i)
l = my_out()
print(l)
2、带有返回值
s = '天地玄黄'
def my_len():#定义函数名
count = 0
for i in s:
count += 1
return count#带有返回值
print(my_len())
s = ['天地玄黄','','宇宙洪荒']
def my_out():#定义函数名
for i in s:
if i == '':
print(i)
return i
l = my_out()#输出 1 是调用函数执行里面的print(i)打印出来的
print(l)#输出 1 是 return 返回的
①、返回一个值
def my_one():
return [1,2,3]
print(my_one())
#可以返回任何数据类型,只要返回就可以接收到
def my_one():
return {'a':'apple','b':'buy it'}
print(my_one())
②、返回多个值
1、多个参数进行接收,有多少返回值用多少参数进行接收
def my_more():
return 'happy','day'
a,b = my_more()
print(a,b)
2、一个参数进行接收所有返回值,返回的数据类型是一个元组
def my_more():
return 'happy','day'
l = my_more()
print(l)
python机制,输入1,2,3逗号隔开就相当于(1,2,3)一个元组。
函数参数
def my_len(s):#定义函数名,传递参数--形参
count = 0
for i in s:#必须与定义的形参一致
count += 1
return count#带有返回值
l1 = '天地玄黄'
l2 = 'good life'
print(my_len(l1))#这里传过去的参数为实际参数--实参
print(my_len(l2))
一个小问题:调用互不影响,顺序可能会影响
def f1(a):
for i in a:
print(i,end=' ')
def f2(b):
for j in b:
print(j,end=' ')
f1([1,2,3])
f1((7,8,9))
f2([4,5,6])
def f1(a):
f2([4, 5, 6])
for i in a:
print(i,end=' ')
f1([1, 2, 3])#此时调用f1,但f2尚未定义
def f2(b):
for j in b:
print(j,end=' ')
多个参数
位置参数
def my_sum(a,b):#定义求和函数
print(a,b)
r = a+b
return r
print(my_sum(1,2))
print(my_sum(2,1))
关键字参数
一、
def my_sum(a,b):#定义求和函数
print(a,b)
r = a+b
return r
l = my_sum(2,b = 1)
print(l)
二、位置参数必须在关键字参数的前面
def my_sum(a,b):#定义求和函数
print(a,b)
r = a+b
return r
l = my_sum(a = 2,b)#位置参数必须在关键字参数的前面
print(l)
默认参数
可以不传,会使用默认值,传了使用传的值。
先位置参数,后默认参数。
def my_default(name,sex='female'):
print('姓名:{},性别:{}'.format(name,sex))
my_default('Miss')
my_default('Mrs')
my_default('Mr','male')
动态参数
*args(位置参数)
可接收若干个位置参数
def my_sum(*args):
count = 0
for i in args:
count += i
return count
print(my_sum(1))
print(my_sum(1,2,3))
print(my_sum(1,2,3,4,5))
只能接收位置参数,如果接收关键字参数,会引发异常。
def test(*args):
print(args)
test(1,2,3)
test(1,2,a = 'oneday')
def test(*args,a='lalala'):
print(args,a)
test(1,2,3)
test(1,2,a = 'oneday')
**kwargs(关键字参数)
可接收若干个关键字参数
def func(**kwargs):
print(kwargs)
func(a = '李白')
func(a = '李白',b = '杜甫')
func(a = '李白',b = '杜甫',c = '张爱玲')
前面就有提到,关键字参数必须在位置参数之后。
动态参数另一种传参方式
def sin(*args):
print(args)
sin(1,2,3,4,5)
li = [1,2,3,4,5,['avengers']]
sin(*li)#给一个序列加上 * ,就是将序列按照顺序传递
def mul(**kwargs):
print(kwargs)
mul(a = 'captain',b = 'loki')
dic = {'a':'captain','b':'loki'}#字典,无序
mul(**dic)
函数参数顺序
顺序
a,*args,default = 'none',**kwargs
位置参数,动态位置参数,默认参数,动态关键字参数
一、(参数同名错误)
def func(a,b,*args,default = 'here',**kwargs):
print(a,b,args,default,kwargs)
func(1,2)
func(1,2,999)
func(1,2,999,default='coming')
func(1,2,999,default='coming',a = 'aaa',b = 'bbb')#位置参数必须在关键字参数之前。a,b为位置参数
位置参数不能在关键字参数之后出现
二、(正确)
def func(a,b,*args,default = 'here',**kwargs):
print(a,b,args,default,kwargs)
func(1,2)
func(1,2,999)
func(1,2,999,default='coming')
func(1,2,999,default='coming',m = 'aaa',n = 'bbb')#
函数注释
def func():
'''
函数实现功能介绍
参数1:作用或者数据类型
参数2:
:return:返回值
'''
pass
默认参数的陷阱
如果默认参数的值是一个可变数据类型,调用函数的时候,不传值就会共用这个数据类型。
def hh(li = []):
li.append(1)
print(li)
hh() #没传,用了默认
hh([2,3]) #传了,用的传的
hh() #没传,用了默认+1
def di(k,d = {}):
d[k] = 'value'
print(d)
di(1)# d 参数没传,共用一个默认的字典
di(2)
di(3)
pass
python学习日记(函数基础)的更多相关文章
- python学习日记(基础数据类型及其方法01)
数字 int 主要是用于计算的,常用的方法有一种 #既十进制数值用二进制表示时,最少使用的位数i = 3#3的ASCII为:0000 0011,即两位 s = i.bit_length() print ...
- Python学习笔记-函数基础
函数基础 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 为什么使用函数:减少重复代码.使程序变的可扩展使程序变得易维护 1.定义一个函数 #定 ...
- python学习总结 --函数基础
函数基础 ### 函数简介 - 定义:具有特定功能的一段代码 - 优点: - 可以减少代码的重复书写 - 可以将功能的实现着和使用者分开,可以提高开发效率 - 分类: - 库函数:print.inpu ...
- Python学习day9 函数Ⅰ(基础)
函数Ⅰ(基础) 三目运算 基本结构 v = 前面 if 条件 else 后面 #条件为真v=前面,条件为假v=后面.#等同于if 条件: v = '前面'else: v = '后面' ...
- python学习日记(基础数据类型及其方法02)
python的变量 python中的变量不需要声明,变量载使用前必须被赋值,变量被赋值以后才会被创建. 在python中变量就是变量,没有数据类型.我们所说的类型是变量所指向内存中的对象的类型. py ...
- python学习之函数基础
第一个python函数: >>> def func_1(): ... print 'hello python' ... >>> func_1() hello pyt ...
- Python 学习日记(第三周)
知识回顾 在上一周的学习里,我学习了一些学习Python的基础知识下面先简短的回顾一些: 1Python的版本和和安装 Python的版本主要有2.x和3.x两个版本这两个版本在语法等方面有一定的区别 ...
- Python学习day16-模块基础
<!doctype html>day16 - 博客 figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { ...
- Python学习day12-函数基础(2)
<!doctype html>day12博客 figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { pos ...
随机推荐
- session与cookie的区别以及HTML5中WebStorage理解
一.session与cookie的区别 二.HTML5中WebStorage理解 WebStorage的目的是克服由cookie所带来的一些限制,当数据需要被严格控制在客户端时,不需要持续的将数据发回 ...
- ps昏暗室内照片调成暖色光亮效果
最终效果 一.打开素材图片,把背景图层复制一层,做HDR滤镜操作,如果你没有这款滤镜,可以去网上下载,参数及效果如下图. 二.复制一层,用Noise滤镜做降噪处理,参数及效果如下图. 三.新建一个图层 ...
- Git远程分支的回退
下午发现上午提交的一个版本有问题,在回退本地分支后,发现还必须要回退远程分支的版本.网上查找到的资料如下: #新建old_master分支做备份 git branch old_master #push ...
- python中类方法,实例方法,静态方法的作用和区别
Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调用的呢?它们又有何区别和作用呢?且看下文. 首先,这三种方法都定义在类中.下面我先简单说一下怎么 ...
- CodeIgniter框架对数据库查询结果进行统计
假设有一个user表,如果要查询符合条件sex=male的记录数量,有下面几种方法: 方法一:先取回所有符合条件的记录,再count $res = $this->db->query(&qu ...
- python生成个性二维码学习笔记
在linux环境下进行编码 1.先进家目录,自行创建Code文件夹 cd Code 2.下载MyQR库 sudo pip3 install MyQR 3.下载所需资源文件并解压 Code/ $ wge ...
- 完美解决safari、微信浏览器下拉回弹效果
CSS代码: .box{ overflow: auto; -webkit-overflow-scrolling: touch; } HTML代码: <body class="box&q ...
- [转帖]Huge Page 是否是拯救性能的万能良药?
Huge Page 是否是拯救性能的万能良药? 本文将分析是否Huge Page在任何条件下(特别是NUMA架构下)都能带来性能提升. 文章欢迎转载,但转载时请保留本段文字,并置于文章的顶部 作者:卢 ...
- java从request中获取GET和POST请求参数
URL和参数列表 一 获取请求方式 request.getMethod(); get和post都可用, 二 获取请求类型 request.getContentType(); get和post都可用,示 ...
- flutter 动画双指放大图片
class GridAnimation extends StatefulWidget { @override State<StatefulWidget> createState() { r ...