函数

什么是函数

把工具事先准备好,然后下次使用的时候,直接使用就行了。我们的函数就是工具

为何用函数

1.遇到重复的功能只能重复编写实现代码,代码冗余

2.功能需要扩展时,需要找出所有实现该功能的地方修改,扩展性差

3.代码的组织结构不清晰,可读性差

函数使用原则

先定义,再调用。即一个函数分成两个阶段:定义阶段和调用阶段

  • 定义阶段:定义函数阶段只识别语法,不运行代码
  • 调用阶段:执行函数体代码

定义函数

# 语法
def 函数名(参数1,参数2,参数3,...):
"""注释:用来解释声明函数功能"""
函数体·
return 返回的值 # 可以用“函数名.__doc__()”来查看定义函数中的"""..."""

函数名

函数名类似于变量名,用来接收变量值;要具有某种意义;用字母、数字、下划线组成,不能以数字开头;且不能是关键字

定义函数的三种方式

拿比较两个数大小举例

# 第一种定义方式:无参函数.在定义函数参数时不给定参数
def sel_max():
'''定义函数'''
x, y = 10, 20
if x > y:
print(x)
else:
print(y) sel_max() # 调用函数 # 第二种方式:有参函数,需要根据外部传进来的参数,才能执行相应的逻辑,有几个参数,就必须传入几个参数
def sel_max(x, y):
if x > y:
print(x)
else:
print(y) sel_max(100,299) # 第三种方式:空函数,设计代码结构。
def sel_max():
pass sel_max()
20

调用函数

语法:函数名加括号,如 self_max()

函数返回值

def sel_max():
pass
result = sel_max()
print(result) # 无返回值
None
def sel_max():
return 'nick' # 返回一个值
result = sel_max()
print(result)
nick
def sel_max():
return 'nick',[1,2,3],20 # 返回多个值 result = sel_max()
print(result)
('nick', [1, 2, 3], 20)

1. 无返回值时,默认返回 None

2. return 1个值时,返回1个值,可以返回任意数据类型的数据

3. return 多个值时,会以元组的形式把多个值包在一起,返回一个元组

4. 函数体遇到return会终止函数,类似于while循环中的break语句

函数的参数

形参与实参

定义函数中的参数称为形参,形参具有描述意义,类似于变量名,不为具体的数据类型

调用函数中的参数称为实参,实参必须是具体分数据类型

位置参数:按从左到右的顺序定义的参数

  • 位置形参:必选参数
  • 位置实参:按照位置给形参传值
def compare(x,y):
if x > y:
return x
return y
print(compare(10,20))
20

关键字参数:按照key = value的形式定义的实参

  • 关键字参数必须在位置实参右面
  • 对同一个形参不能重复传值
  • 不需要按照位置为形参传值
def compare(x=10,y=8):
if x > y:
return x
return y
print(compare()) # 在定义时给定了关键字参数,不需要再调用时赋值
print(compare(y=20)) # 实参传值时,实参传的值会覆盖形参的值
10
20

默认参数:在定义形参时为其赋值

可以传值也可以不传值,经常需要变得参数定义成位置形参,变化较小的参数定义成默认参数(形参)

def compare(x,y=8):
if x > y:
return x
return y
print(compare(10,y=20)) # 默认形参必须在位置形参后面
20

可变长参数:指的是实参值的个数不固定

而实参有按位置和关键字两种形式定义,针对这两种形式的可变长,形参约定俗成用*args存放位置参数、用**kwargs来存放关键字参数

def self_max(*args,**kwargs):
print(args)
print(kwargs)
self_max(1,2,3,4,5,6,7,x=6,y=8,z=20,a=10,c=1000)
(1, 2, 3, 4, 5, 6, 7)
{'x': 6, 'y': 8, 'z': 20, 'a': 10, 'c': 1000}
  • args接受了所有位置实参,然后以元祖的形式保存下来,只接受位置参数,不接受关键字实参
  • kwarg接收所有的关键字实参,然后以字典的形式保存下来

函数对象

在python中,一切皆对象,函数也是一类对象,即函数可以当做数据传递,从而可实现函数的嵌套

def self_max(x, y):  # x=1000,y=100
if x > y:
return x # 100 # 返回一个值,给函数名 # return 任意数据类型的数据
else:
return y def max_4num(x, y, a, b):
res1 = self_max(x, y)
res2 = self_max(res1, a)
return self_max(res2, b)
res = max_4num(100,2000,2000,40000)
print(res)
40000

day10-函数基础知识的更多相关文章

  1. 10分钟学会Python函数基础知识

    看完本文大概需要8分钟,看完后,仔细看下代码,认真回一下,函数基本知识就OK了.最好还是把代码敲一下. 一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运 ...

  2. python — 函数基础知识(一)

    目录 1 面向过程编程与函数式编程 2 函数的基本结构 3 函数的参数 1 面向过程编程与函数式编程 截至目前我们所接触.所写的编程为:面向过程式编程[可读性差/可重用性差] # 面向过程编程 use ...

  3. 【javascript 函数基础知识】

    函数实际上是对象,每个函数都是 Function 类型的实例,而且都会与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定. [概念标签] ...

  4. js函数基础知识

    [函数的声明及调用] function 函数名(参数1,参数2,....){ //函数体代码 return返回值: } 1.函数的调用: ①直接调用:函数名(参数1的值,参数2的值,....) ②事件 ...

  5. Date函数基础知识整理

    Date类型:1.Date.parse()接收一个表示日期的字符串参数,然后再根据这个字符串返回响应的日期的毫秒数:如:创建一个日期: <script> // var someDate=n ...

  6. Python全栈day10(基础知识练习题)

    一,执行python的两种方式 1,写在脚本里面调用python执行,例如python test.py 2,  输入python在命令行交互执行,例如 python  >>> pri ...

  7. python 函数基础知识整理

    一.函数的定义: 定义:def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":". def 是固定的,不能变,必须是连续的def三个字母,不能分开... 空格 为了将 ...

  8. 020--python函数基础知识考试(包括:函数_递归等知识)

    1.列举布尔值为 False 的值 空,None,0, False, '', [], {}, () 2.写函数: 根据范围获取其中 3 和 7 整除的所有数的和,并返回调用者:符合条件的数字个数以及符 ...

  9. python — 函数基础知识(二)

    目录 1 返回值 2 作用域 3 函数小高级 4 函数中高级 1 返回值 def func(arg): # .... return 9 # 返回值为9 默认:return None val = fun ...

  10. python函数-基础知识

    一.含义函数是程序内的“小程序” 二.示例 #!/usr/bin/env python #coding:utf-8 def hello(): print('Hello world!') print(' ...

随机推荐

  1. MAPZONE GIS SDK接入Openlayers3之二——空间参考扩展

    Openlayers默认了两种空间参考,一个是EPSG4326,一个是EPSG3857,其它的空间参考需要进行扩展才能使用.所以我们初始化时进行了如下操作: 1.将配置数据库中所有的空间参考读取出来, ...

  2. VB的程序如何破解

    VB的程序,不会告诉你这个VB写的,但是从界面来看就很像VB,一般是单文件的EXE,然后软件还比较小(早期的傻瓜式软件写的东西)   比如说我们想要知道这个"手动采集"按钮干了什么 ...

  3. 重学数据结构系列之——平衡树之SB Tree(Size Blanced Tree)

    学习来源:计蒜客 平衡树 1.定义 对于每一个结点.左右两个子树的高度差的绝对值不超过1,或者叫深度差不超过1 为什么会出现这样一种树呢? 假如我们依照1-n的顺序插入到二叉排序树中,那么二叉排序树就 ...

  4. javascript 将中文符号转换成英文符号

      javascript 将中文符号转换成英文符号 CreateTime--2018年3月30日09:01:29 Author:Marydon /** * 将中文符号转换成英文符号 */ functi ...

  5. vim学习笔记(1)——vim操作

    仅记录一些自己最经常使用的vim操作.随时更新 文本操作 d 剪切.双击剪切一行 y 复制,双击复制一行 p 粘贴 x 删除当前光标下字符 r 替换当前光标字符.后面接替换的字符 :s/old/new ...

  6. linux RHEL 修改hostname 不需要重启机器

    1. 修改/etc/sysconfig/network 中的hostname HOSTNAME=newhostname 运行命令起作用: /etc/rc.d/rc.sysinit 2. 修改/ect/ ...

  7. java有用的启动参数

    三大类选项: 1. 标准选项: 功能是很稳定的,所有的标准选项都是以-开头,比如-version, -server等. 2. X选项:以-X开头,这类选项的功能还是很稳定,但官方的说法是它们的行为可能 ...

  8. IE浏览器 多版本之间切换

    由于Win7系统最低支持IE8的版本,不能通过安装IE7版本来达到要求. 有一个替代方案,通过IE自带Emulation来实现,实现步骤如下: 打开现有的IE浏览器 按下F12键 切换到“Emulat ...

  9. Ubuntu 查看当前目录使用的总空间大小

    查看当前目录使用的总空间大小 du -h --max-depth=0 #du -h --max-depth=0 217M . 查看当前目录使用总空间的大小以及当前目录下一级文件及文件夹各自使用的总空间 ...

  10. Filter,Interceptor和Aspect

    过滤器使用的主要是反射 :拦截器使用的主要是回调 :AOP使用的主要是动态代理. 一个请求过来 ,先进行过滤器处理,看程序是否受理该请求.过滤器放过后, 程序中的拦截器进行处理,处理完后进入被AOP动 ...