写在前面:

在两个电脑上编辑总是莫名其妙丢失内容,发现前面的笔记有丢失的部分,又回去补充了。

记到函数这一部分,书中案例会不断使用前面所学,所以会发现笔记有不完善的地方,以及在学习过程产生的疑问,会自己去敲还会看大神的教程(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自学笔记(七):函数相关推荐

  1. python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

    本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...

  2. Python简短的自学笔记

    Python自学笔记 第一章:语法类型 list类型:['Michael', 'Bob', 'Tracy'] tuple(元组)类型:t = ('Adam', 'Lisa', 'Bart') dict ...

  3. Python在入门-自学笔记-8字典

    Python零基础入门自学笔记 参考教程[Python教程]<零基础入门学习Python>最新版@B站@鱼C-小甲鱼 本文记录的主要是Python中的字典. 映射关系 效率会比列表快 0. ...

  4. python菜单函数_Python 自学笔记- 列表及其内置函数

    0. 列表都可以存放一些什么东西? 我们可以说Python 的列表是一个打了激素的数组,如果把数组比喻成集装箱,那么 Python 的列表就是一个大仓库,Ta 可以存放我们已经学习过的任何数据类型. ...

  5. python通过封装可以实现代码复用_Python学习笔记(五)函数和代码复用

    函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Python提供了许多内建函数,比如print().同样,你也可以自己创建函数, ...

  6. python函数参数学习_python学习笔记-11.函数参数和返回值进阶

    1. 函数参数和返回值的作用 函数根据有没有参数以及有没有返回值,可以相互组合,共有4种形式: 无参数,无返回值 无参数,有返回值 有参数,无返回值 有参数,有返回值 定义函数时,是否接收参数,或者是 ...

  7. python自学笔记_Python 自学笔记

    赘述 mac自带python2.7版本,但是最新版本和旧版本不兼容,所以还是决定重新下载新版本,并且新版本是可以和旧版本共存的. 在安装的时候还是会遇到一些小坑,特此记录一些命令行的使用,方便后期查找 ...

  8. python函数的基本使用_Python学习笔记——主要函数及基本使用(与C的对比)

    实时更新中- 1.函数 1.1 title()函数-以首字母大写的方式显示每个单词 使用方法: name="ada lovelace" print(name.title()) 结果 ...

  9. python定义函数的组成部分有_Python学习笔记之函数的定义和作用域实例详解

    本文实例讲述了Python函数的定义和作用域.分享给大家供大家参考,具体如下: 定义函数 默认参数: 可以向函数中添加默认参数,以便为在函数调用中未指定的参数提供默认值 # 如果调用 cylinder ...

最新文章

  1. codeforces educational round110 e
  2. springboot创建多个对象
  3. $router VS $route
  4. java版本的getorcreate,getOrCreate for java-rest-api neo4j失敗
  5. spring 优越性实践
  6. 企业打款创建X509Certificate2对象时内部出错
  7. JZ32变形~剑指 Offer 32 - II. 从上到下打印二叉树 II
  8. cin.getline()、getline()、gets()、cin.get(),getchar()的区别
  9. cognos java_cognos与java结合 ?急!急!急!
  10. word中插入上下左右箭头
  11. vmware虚拟机centos7扩容
  12. kotlin学习之高阶函数及常用基本高阶函数
  13. 一起学习正则表达式(五)断言匹配
  14. 朋友圈长文不折叠神器
  15. Julia 构建对角矩阵 diag matrix
  16. ‘DatePicker.RangePicker‘ cannot be used as a JSX component.
  17. WaitForMultipleObjects的疑惑
  18. 一个NB-IoT/4G模组的AT拨号联网流程
  19. Vue.js学习-搭建一个简单的demo
  20. 打开.jmx文件时报错:CannotResolveClassException

热门文章

  1. 手机python软件怎么创建项目_创建成功的 Python 项目
  2. 程序员为什么要单身?
  3. OpenAPI 规范 3.1.0 发布,赶紧来尝尝鲜!
  4. IDEA界面太丑??尝试一下这几个插件!
  5. Spring Cloud Hoxton正式发布,Spring Boot 2.2.x不再孤单
  6. opencv4 图像无缝融合
  7. HRFormer 踩坑日记
  8. python opengl 入门
  9. mxnet加载预训练
  10. 3rd_party/flatbuffers/tmp/flatc: No such file or directory