函数:

函数的定义:

初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因变量,y是x的函数。自变量x的取值范围叫做这个函数的定义域,编程语言中函数定义:函数是逻辑结构化和过程化的一种编程方法。

函数的三大优点:

1.代码重用

2.保持一致性

3.可扩展性

函数的分类:

(1)、内置函数

(2)、自定义函数

接下来说的都是自定义函数相关:

1、关于如何定义函数:

def:定义函数的关键字
test:函数名
():内可定义形参
"":文档描述(非必要,但是强烈建议为你的函数添加描述信息)
x+=1:泛指代码块或程序处理逻辑
return:定义返回值

2、关于函数的参数可分为3种:

a、定义无参函数:这种函数的执行就是普通语句,不需要外部传来的参数,如果定义的是无参函数的话,调用的时候也是无参数

b、定义有参函数:需要外部传来的参数,如果定义的是有参函数的话,调用的时候也需要加参数

c、定义空函数

定义函数示例:

def foo(x,y):#括号内的x和y都属于参数(形参)
#定义一个取x+y的值的函数
print("from foo")
res=x+y
return res #return是返回值
z=foo(1,2)#括号内的x和y都属于参数(实参)
print(z)

 运行结果是: 

from foo
3

3、关于return返回值(无参函数不需要返回值,有参函数需要返回值)

函数和过程:

过程定义:过程就是简单特殊没有返回值的函数,没有返回值就是过程

a、不写return的话,返回值就是none

b、写return一个值的话,就返回一个值

c、写return多个值的话(这些值可以是任意数据类型),就返回多个值,以元组的方式呈现

示例1:

def foo(x,y):
return 1,2,3,[4,5],{"a":2}
res=foo(1,2)
print(res)

运行结果是:(以元组的方式呈现)

(1, 2, 3, [4, 5], {'a': 2})

示例2:

def foo(x,y):
return 1,2,3
a,b,c=foo(4,5)
print(a)
print(b)
print(c)

运行结果是:

1
2
3

4、关于函数的参数:

a、定义:定义时,括号里写的就是形式参数     >>>>>>   即形参,形参就是变量名

b、调用:函数调用时,括号里写的就是实际参数   >>>>>  即实参,实参就是变量值,实参可以是变量的形式

def foo(x,y):#x和y表示的是形参
print(x)
print(y) foo(1,2)#1和2表示的是实参  

区别:形参是虚拟的,不占用内存空间,.形参变量只有在被调用时才分配内存单元,实参是一个变量,占用内存空间,数据传送单向,实参传给形参,不能形参传给实参

注意:写函数的时候,传值最好不要传可变的数据类型,容易影响全局

示例1:

def foo(x,y):
print(x)
print(y) a=11
b=22
foo(a,b)

运行结果是:  

11
22

示例2:

def foo(x,y):
print(x)
print(y) x=[1,2,3]
y=22
foo(x,y)

运行结果是:

[1, 2, 3]
22

5、关于形参和实参:

(1)、关于实参的传值需要注意三点:

a、按照位置传值

b、按照关键字传值

c、位置传值和关键字传值两者结合使用(需要注意:1、位置传值必须要在关键字传值的前面;2、对于一个形参,只能赋值一次)

位置传值示例:

def foo(x,y):#x和y表示的是形参
print(x)
print(y) foo(1,2)#1和2表示的是实参

 执行结果:

1
2

 关键字传值示例:

def foo(x,y):
print(x)
print(y) foo(y=1,x=2)

  执行结果是:

2
1

 位置传值和关键字传值两者结合使用示例:

def foo(x,y):
print(x)
print(y) foo(1,y=2)

  执行结果是:

1
2 

(2)、关于形参:

a、形参位置参数(必须传值的参数,少一个都不行)

b、形参的默认参数(调用时不需传值)

经常变换的可用位置参数,常用的可用默认参数

注意:多参数时,默认参数必须放到位置参数的后面

c、*args

d、**kwargs

形参的位置参数示例:

def foo(x,y,z,):
print(x)
print(y)
print(z) foo(1,2,3)#必须给上面的形参x y z每一个传值

 执行结果:

1
2
3

 形参的默认参数示例:

def foo(x,y,z=3,):
print(x)
print(y)
print(z) foo(1,2)#不需要给默认参数z传值

 执行结果是:

1
2
3

  

 

 

  

 

 

  

  

python基础之函数(自定义函数)的更多相关文章

  1. Python基础11- 函数之自定义函数

    自定义函数语法结构:def fun1([x],[y],....): 语句1 语句2 使用def语句来定义函数,在def后依次写出函数名.小括号.参数(可无).冒号,然后缩进写函数体 1.无参函数:de ...

  2. 十六. Python基础(16)--内置函数-2

    十六. Python基础(16)--内置函数-2 1 ● 内置函数format() Convert a value to a "formatted" representation. ...

  3. 十五. Python基础(15)--内置函数-1

    十五. Python基础(15)--内置函数-1 1 ● eval(), exec(), compile() 执行字符串数据类型的python代码 检测#import os 'import' in c ...

  4. 洗礼灵魂,修炼python(20)--自定义函数(1)—基础概念

    作为开发,那么我们前面学的那些知识其实够了,但是不够精简,也不好维护,比如需要打印斐波那契数列: 而当我们需要再次打印斐波那契数列,又要把这段代码加上,是不是很烦,有没有方法可以解决,当然可以,那就是 ...

  5. 【python学习之五】自定义函数实现用 Python 发送电子邮件

    前言 之前论坛里有人发过关于发送邮件的帖子,设计器也有关于发送邮件的控件.我这里再次重复,希望能有帮到大家的地方. 信息准备 发送邮件前必须准备好一些基本信息,例如发件人邮箱地址.发件人邮箱密码.收件 ...

  6. 洗礼灵魂,修炼python(21)--自定义函数(2)—函数文档,doctest模块,形参,实参,默认参数,关键字参数,收集参数,位置参数

    函数文档 1.什么是函数文档: 就是放在函数体之前的一段说明,其本身是一段字符串,一个完整的函数需要带有函数文档,这样利于他人阅读,方便理解此函数的作用,能做什么运算 2.怎么查看函数文档: func ...

  7. Python学习(五)函数 —— 自定义函数

    Python 自定义函数 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print()等.也可以创建用户自定义函数. 函数定义 函数定义的简单规则: 函数代码块以de ...

  8. 『Python基础-14』匿名函数 `lambda`

    匿名函数和关键字lambda 匿名函数就是没有名称的函数,也就是不再使用def语句定义的函数 在Python中,如果要声匿名函数,则需要使用lambda关键字 使用lambda声明的匿名函数能接收任何 ...

  9. python基础-文件处理与函数

    1. 文件处理 1.1 文件处理流程 1.打开文件,得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 1.2 文件读取模式r r文本模式的读,在文件不存在,不会创建新文件 f = ...

  10. Python基础篇(三)_函数及代码复用

    Python基础篇_函数及代码复用 函数的定义.使用: 函数的定义:通过保留字def实现. 定义形式:def <函数名>(<参数列表>): <函数体> return ...

随机推荐

  1. ES5新增数组方法(3):some

    检查数组元素中是否有元素符合指定. // 数组中的元素部分满足指定条件返回true let arr = [1, 3, 5, 7, 9]; console.log(arr.some((value, in ...

  2. 阿里的100TB Sort Benchmark排序比雅虎快了一倍还多,我的看法

    如果我的判断正确,它们使用的软件和算法应该是HADOOP,MAP/REDUCE,或者类似的技术方案.如果这些条件一样,影响计算结果的还有三个因素: 1.CPU的数量和CPU的处理能力     CPU的 ...

  3. Visual Studio 2014安装包

    点击下载

  4. 修复 Ubuntu 中“Unable to lock the administration directory (/var/lib/dpkg/)”

    在 Ubuntu 或者它的衍生版如 Linux Mint(我已经作为日常工作使用的系统)中使用 apt-get 命令或者其相对更新的APT 管理工具时,你可能会在命令行中看到一个 unable to ...

  5. ipfs补充命令

    ipfs cat之后 将文件保存在指定的路径下 添加都文件夹下面 ipfs files cp /ipfs/QmSkyNME8YqndkNq7ovKphpYwjk2hEQ61P1pjSckqLP6zt ...

  6. Codeforces Round #345 Div.1 D.Zip-line 动态最长上升子序列

    题意概述: 给出一个长度为N的序列和M组询问,问假设把某个位置的值改成另一个给出的值之后,序列的最长上升子序列的长度. N,M<=400000. 分析: 考虑某个位置的值改动后这个位置和最长上升 ...

  7. Week8 Teamework from Z.XML-Z.XML游戏功能说明

    我们小组的游戏终于新鲜出炉了,好开心~ 快来看看有什么功能吧. 游戏目标::=打倒最多的敌人,获得积分,放松心情,获取快乐. 游戏菜单::= 关于+设置+帮助+积分榜+开始游戏吧 (截图还在路上..) ...

  8. UVA215 Spreadsheet

    这道题题目大意就是计算带有单元格引用的各单元格的值. 这道题本身不难,有以下几个关键点: 1.如何判断一个单元格循环引用 2.注意对字符串的细致处理 我出现的错误出现在以上两个方面,思路本身是不难的. ...

  9. Beat 冲刺 (3/7)

    队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 1.界面的修改与完善 展示GitHub当日代码/文档签入记 ...

  10. Name node is in safe mode.

    刚才启动hadoop,然后执行rm -r命令,出现这个问题,标记为红色的部分意思是namenode是安全节点, [master@hadoop file]$ hadoop fs -rm -r  /inp ...