python middle()_Python自学笔记(七):函数
写在前面:
在两个电脑上编辑总是莫名其妙丢失内容,发现前面的笔记有丢失的部分,又回去补充了。
记到函数这一部分,书中案例会不断使用前面所学,所以会发现笔记有不完善的地方,以及在学习过程产生的疑问,会自己去敲还会看大神的教程(runoob和廖雪峰的网站),也会理解后更新在自己的笔记。当然第一次笔记肯定不完善,在记完笔记后我会继续完善笔记内容,加油!
什么是函数?在第一篇中有提过说:类似数学函数。数学函数有自变量x、因变量y以及他们之间的关系。Python函数是带名字的代码块,并实现某项工作(类似x与y的关系),可以对传入不同的信息(x),重复使用函数实现这项工作得到不同的结果(y)。
同时第一篇也说过要记忆一些函数,比如print、int、str等,这些是Python的内置函数。本篇将学会自定义函数,实现想要的功能(工作)。
一、定义函数
def function(x):
print(1 + x)
function(2)
# 第一行:定义函数,从def开始到 : 结束。告诉我们定义了一个叫function的函数。
# ①注:()必不可少,可以为空,但是其内可以传入信息(x)帮助实现工作。
# 第二行:冒号后的缩进内容是函数体。即function函数实现的工作。
# 第三行:函数的使用。传入信息 2 给function函数,获得结果。
# ②注:类似数学函数:y = 1 + x。只需改变x的值就可以获得对应y的值
1.1 向函数传递信息(如上)
1.2 实参和形参
形参是函数完成其工作需要的信息,实参是调用函数时传递给函数的信息。
在定义函数时参数x是形参,调用函数时给函数传递的值2是实参,值2被存储到了形参中。
二、传递实参
定义函数时的()可以包含多个形参,因此实参也会有多个。
2.1 位置实参
位置实参实质指的是实参与形参要顺序一致
def printinfo(name,age):
print("名字: ", name)
print("年龄: ", age)
printinfo("nanhua",3)
printinfo("fafa",3)
# 字符串nanhua(实参)存入函数的形参name中,3存入age中,如果实参顺序错误,
# 多次使用函数直接传入信息即可。打印两个人的两条信息不足以显示函数的优势,(思考:打印很多人的多条信息)
2.2 关键字实参
关键字实参指的是实参与形参通过=关联起来(调用函数时把实参赋值给形参)。这样就不用考虑传给函数实参的顺序,也能看出是否传递错误。
def printinfo(name,age):
print("名字: ", name)
print("年龄: ", age)
printinfo(name = "nanhua",age = 3)
printinfo(age = 3,name = "fafa")
2.3 默认值
什么是默认值?即便没有传递实参,该形参也会获得一个默认的值,
def printinfo(name,sex,age=3):
print("名字: ", name)
print("性别: ", sex)
print("年龄: ", age)
printinfo("huahua","F")
printinfo("fafa","F",5)
printinfo(sex = "M",age = 4,name = "nanhua")
# 给形参age的默认值为3,传递位置实参、关键字实参都可以关联形参age
2.4 等效的函数调用(略)
内容是混合使用位置实参、关键字实参、形参默认值
2.5 避免实参错误
在未来使用别人的函数,在传递实参给形参时出错(漏传,多传等)或者不知道传递什么,更建议看一看官方文档,文档都会有示例。
三、返回值
什么时返回值?返回值即函数返回的值,通过return语句将值返回到调用函数的代码行。
区别于函数体中的print()函数
3.1 返回简单值
def fun_1(x):
return 1 + x
y = fun_1(2)
print(type(y))
def fun_2(x):
print(1 + x)
y = function(2)
print(type(y))
# 调用返回值的函数时需要提供一个变量存储返回值。而print()是在函数体内部实现的。
3.2 实参可选(默认值应用)
# 把middle_name设置为空的默认值
def name(first_name,last_name,middle_name = ''):
# Python将非空字符解读为True,因此middle_name为可选的。
if middle_name:
full_name = first_name + '·'+ middle_name + '·'+last_name
else:
full_name = first_name+ '·'+last_name
return full_name.title()
man_1 = name('j','k')
print(man)
man_2 = name('a','b','c')
print(man)
3.3返回字典(return应用)
def name(f,l,age=''):
person = {'first_name':f,'last_name':l}
if age:
person['age']= age
else:
person['age']= 'unknown'
return person
man = name('j','k')
print(man)
# 函数体创建字典,return该字典,在调用函数时可返回字典
3.4 结合使用函数和while循环结合(略)
四、向函数传递列表
def fun_sum(lists):
y = 0
for num in list_num:
y = y + num
lists.insert(len(lists),y)
return y
list_num = [1,3,4]
print(fun_sum(list_num))
print(list_num)
# 一个简单的求和函数,并把求和的数传入列表的末尾
4.1 在函数中修改列表(在函数中的while应用)
# 核心还是while的自定义条件退出循环(见篇(六)3.1)
# 略
4.2 禁止函数修改列表(切片的应用,见篇(三)4.3)
4.3 补充:函数和可变对象、不可变对象
# 对比本节的示例和下面的代码
def test( a ):
a = 10
b = 2
test(b)
print( b ) # 结果是 2
# 问题:向函数传入列表,最终列表是改变的,向函数传入变量,此变量b = 2没有改变。
# 本节示例,可以复习篇(三)4.3,此示例:先给变量b赋值,再把实参b传递给形参a,b还是2不曾改变
# 理由:篇(一)补充与总结提到的可变对象和不可变对象。
# 先让x = 1,再让x = 2,实质上是新创造一个变量x并赋值2;列表元素的改变是在原列表上进行改变。
五、传递任意数量的实参
传递实参:任意数量实参、位置实参、关键字实参、默认值
def fun_1(*tuple):
# 形参名*tuple中的*创建了一个名为tuple的空元组
def fun_2(**dic):
# 形参名**dic中的**创建了一个名为dic的空字典
5.1 结合使用位置实参和任意数量实参
def fun_sum(x,*num):
y = 0
for n in num: # 遍历元组num
y = y + n
return y
t = fun_sum(1,2,4,5)
print(t)
5.2 使用任意数量的关键字实参
def info(f,l,**other):
person = {}
person["first_name"] = f
person["last_name"] = l
for key,value in other.items(): # 遍历字典other
person[key] = value
return person
man = info('j','k',age = 13,laguage = "python")
print(man)
六、将函数存储到模块
什么是模块?拓展名为.py的文件,包含要导入到程序中的代码(函数等),函数可以是多个。
# 6.1 导入模块(import函数)
import module_name # 导入module_name模块
module_name.function_name() # 调用某个函数时要通过模块名.函数名
# 6.2 导入特定的函数
from function_name import module_name # 导入module_name的函数function_name
function_name() # 调用某个函数时直接使用函数名
# 6.3 as取别名
import module_name as mn
mn.function_name() # 调用某个函数时要通过模块别名.函数名
# 6.4 导入模块中所有的函数
from module_name import *
function_name() # 调用某个函数时直接使用函数名
七、小结
①本篇讲的是自定义函数。如何编写函数、传递实参和返回值是重点、结合前面的内容也是重要的(这希望每个人能有自己的想法和例子,可以借鉴)。
②调用模块和函数只需要有个印象就可,后面会常用的,并且模块和包、库区别也很模糊,这里留个坑。
③传递实参需要总结
加油!
python middle()_Python自学笔记(七):函数相关推荐
- python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用
本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...
- Python简短的自学笔记
Python自学笔记 第一章:语法类型 list类型:['Michael', 'Bob', 'Tracy'] tuple(元组)类型:t = ('Adam', 'Lisa', 'Bart') dict ...
- Python在入门-自学笔记-8字典
Python零基础入门自学笔记 参考教程[Python教程]<零基础入门学习Python>最新版@B站@鱼C-小甲鱼 本文记录的主要是Python中的字典. 映射关系 效率会比列表快 0. ...
- python菜单函数_Python 自学笔记- 列表及其内置函数
0. 列表都可以存放一些什么东西? 我们可以说Python 的列表是一个打了激素的数组,如果把数组比喻成集装箱,那么 Python 的列表就是一个大仓库,Ta 可以存放我们已经学习过的任何数据类型. ...
- python通过封装可以实现代码复用_Python学习笔记(五)函数和代码复用
函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Python提供了许多内建函数,比如print().同样,你也可以自己创建函数, ...
- python函数参数学习_python学习笔记-11.函数参数和返回值进阶
1. 函数参数和返回值的作用 函数根据有没有参数以及有没有返回值,可以相互组合,共有4种形式: 无参数,无返回值 无参数,有返回值 有参数,无返回值 有参数,有返回值 定义函数时,是否接收参数,或者是 ...
- python自学笔记_Python 自学笔记
赘述 mac自带python2.7版本,但是最新版本和旧版本不兼容,所以还是决定重新下载新版本,并且新版本是可以和旧版本共存的. 在安装的时候还是会遇到一些小坑,特此记录一些命令行的使用,方便后期查找 ...
- python函数的基本使用_Python学习笔记——主要函数及基本使用(与C的对比)
实时更新中- 1.函数 1.1 title()函数-以首字母大写的方式显示每个单词 使用方法: name="ada lovelace" print(name.title()) 结果 ...
- python定义函数的组成部分有_Python学习笔记之函数的定义和作用域实例详解
本文实例讲述了Python函数的定义和作用域.分享给大家供大家参考,具体如下: 定义函数 默认参数: 可以向函数中添加默认参数,以便为在函数调用中未指定的参数提供默认值 # 如果调用 cylinder ...
最新文章
- codeforces educational round110 e
- springboot创建多个对象
- $router VS $route
- java版本的getorcreate,getOrCreate for java-rest-api neo4j失敗
- spring 优越性实践
- 企业打款创建X509Certificate2对象时内部出错
- JZ32变形~剑指 Offer 32 - II. 从上到下打印二叉树 II
- cin.getline()、getline()、gets()、cin.get(),getchar()的区别
- cognos java_cognos与java结合 ?急!急!急!
- word中插入上下左右箭头
- vmware虚拟机centos7扩容
- kotlin学习之高阶函数及常用基本高阶函数
- 一起学习正则表达式(五)断言匹配
- 朋友圈长文不折叠神器
- Julia 构建对角矩阵 diag matrix
- ‘DatePicker.RangePicker‘ cannot be used as a JSX component.
- WaitForMultipleObjects的疑惑
- 一个NB-IoT/4G模组的AT拨号联网流程
- Vue.js学习-搭建一个简单的demo
- 打开.jmx文件时报错:CannotResolveClassException
热门文章
- 手机python软件怎么创建项目_创建成功的 Python 项目
- 程序员为什么要单身?
- OpenAPI 规范 3.1.0 发布,赶紧来尝尝鲜!
- IDEA界面太丑??尝试一下这几个插件!
- Spring Cloud Hoxton正式发布,Spring Boot 2.2.x不再孤单
- opencv4 图像无缝融合
- HRFormer 踩坑日记
- python opengl 入门
- mxnet加载预训练
- 3rd_party/flatbuffers/tmp/flatc: No such file or directory