函数

一。函数基础

1.什么是函数

在一个完整的项目中,某些功能会被重复使用,那么会将代码段封装成函数,当我们要使用的时候,直接调用即可。

函数是可以实现一定的小程序或者功能。

优点:

  增加了代码的重复使用率,简化了代码的结构。

  减少了代码量,提高可读性。

  提高了代码的维护性。

2.函数如何定义   

主体结构

  def  函数名([参数]):

    pass

函数名:使用标识符的命名规则

注意:

  函数区分大小写;

  函数是可以重名的,但是会被覆盖;

3.函数调用

函数的使用称为调用函数。

格式: 函数名([参数])

注意:

  调用函数必须在函数定义的下方调用,否则报错。

参数

本质:实参给形参赋值的过程。

4.函数返回值

关键字:return

如果return不写,相当于return  None

作用:将值返回给函数调用处

使用:

def 函数名():

  pass

  return 值/表达式

1 def num():
2 x = 1
3 y = 1
4 return x + y    # 函数体遇到return就认为函数执行完毕,后面的代码不会再执行
5
6
7 a = num()
8 print(a)

运行结果:

2

Process finished with exit code 0

注意:

  函数体遇到return就认为函数执行完毕,后面的代码不会再执行

return可以返回多个值:字典、列表、元组、集合、字符串.....

二。函数的提升

1.函数的参数

形参:在函数定义的时候,写在括号里的变量

实参:在函数调用处所传递的参数

注意:

  形参的数量在理论上是无限的,但最好不要超过6,7个,类型也没有限制

实例:

1 def test(x, y):
2 return x + y
3
4
5 print(test(1, 2))

运行结果:

3

  

2.参数默认值

主体结构:

  def 函数名(参数名=值,[参数名=值].....)

    pass

实例:

1 def test(x=1, y=2):    # 有默认值的放在后面,def test(x, y=2)
2 print(x, y)
3 return x + y
4
5
6 print(test())
7 print(test(3, 4))

运行结果:

1 2
3
3 4
7

注意:

  1.如果函数定义有形参,且没有默认值,则必须传递实参

  2.如果函数定义有形参,且有默认值,则可以不传递实参

  3.如果函数定义有形参,且有默认值,如果传递实参,则参数值为你传递的实参的值

  4.如果给函数参数设置默认值,则有默认值的放在右侧,没有默认值的放在左侧,如果都有默认值,则对位置没有要求。

3.关键字参数

作用:可以使用关键字参数改变形参与实参一一对应的关系,也就是说,我们可以指定某个形参传递实参。

实例:

1 def test(x=1, y=2, z=3):
2 print(x, y, z)
3
4
5 test(y=4)

运行结果:

1 4 3

Process finished with exit code 0

注意:

  1. 如果给形参关键字,可以全部都给关键字

  2. 如果有一部分给关键字,一部分不给关键字,则给关键字的参数都写在右侧,没有关键字的,写在左侧。

4.不定长参数

概述:就是传入的参数个数不确定,或者说能处理比定义时更多的参数。

*args

不确定参数*形参名,以元组的形式去接收

在形参变量前添加*变量会存储所有未命名的变量的参数,如果在函数调用处,不传递实参,则此时*args为空元组。

实例:

1 def test(*args):
2 print(args)
3
4
5 test(1, 2, 3)

注意:

  1.如果不给函数传递实参,则args接收为空元组

  2.*args可以和普通形参组合使用,*args需要放在最右侧,用来接收不定长参数的值。

  

**kwargs

不定长关键字参数的接收,接收之后为字典类型。

实例:

 1 def test(**kwargs):
2 print(kwargs)
3 print(type(kwargs))
4
5
6 test(name='xm')
7
8
9
10
11
12 运行结果:
13
14 {'name': 'xm'}
15 <class 'dict'>
16
17 Process finished with exit code 0

函数调用处的*

实例:

 1 def test(a, b, c):
2 print(a, b, c)
3
4
5 str1 = '123'
6 test(*str1)      # str1必须是一个可迭代对象才可以用*
7
8
9
10
11
12 运行结果:
13 1 2 3
14
15 Process finished with exit code 0

注意:

  1.在调用处给实参前添加*会将当前可迭代对象拆分成多个实参,形参的位置也要有多个形参去接收或者可以在一个形参前添加*,为不定长参数接收。

函数调用处的**

实例:

 1 def test(**kwargs):
2 print(kwargs)
3
4 dict1 = {'name': 'xm'}
5 test(**dict1)
6
7
8
9
10
11
12
13
14 运行结果:
15 {'name': 'xm'}
16
17 Process finished with exit code 0

初学python-day9 函数1(已更新)的更多相关文章

  1. Python day9函数部分

    函数的学习:函数对于一门编程语言来说挺重要的,尤其是c语言,是完全使用函数来编写的 1.函数的定义:逻辑结构化和过程化的一种编程方法 def squre(x): "求一个数的平方 retur ...

  2. python—day9 函数的定义、操作使用方法、函数的分类、函数的嵌套调用

    一.函数的定义 函数的四个组成部分: 函数名. 函数体. 函数返回值. 函数参数 1.概念:重复利用的工具,可以完成特定功能的代码块,函数是存放代码块的容器 2.定义: def:声明函数的关键词 函数 ...

  3. 初学 Python(十三)——匿名函数

    初学 Python(十三)--匿名函数 初学 Python,主要整理一些学习到的知识点,这次是匿名函数. # -*- coding:utf-8 -*- #关键字lambda定义的函数都是匿名函数 #做 ...

  4. 初学 Python(十二)——高阶函数

    初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 ...

  5. 初学Python(九)——函数

    初学Python(九)--函数 初学Python,主要整理一些学习到的知识点,这次是函数. 函数定义: # -*- coding:utf-8 -*- #函数的定义 def my_function(x) ...

  6. python基于函数替换的热更新原理介绍

    热更新即在不重启进程或者不离开Python interpreter的情况下使得被编辑之后的python源码能够直接生效并按照预期被执行新代码.平常开发中,热更能极大提高程序开发和调试的效率,在修复线上 ...

  7. python第六天 函数 python标准库实例大全

    今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...

  8. Python虚拟机函数机制之位置参数(四)

    位置参数的传递 前面我们已经分析了无参函数的调用过程,我们来看看Python是如何来实现带参函数的调用的.其实,基本的调用流程与无参函数一样,而不同的是,在调用带参函数时,Python虚拟机必须传递参 ...

  9. 初学python笔记

    一.关于python ① 由荷兰人Guido van Rossum(龟叔)于1989年圣诞节为打发无聊时间所编写的编程语言. ② python的特点:优雅 明确 简单.代码量少,运行速度快. 缺点:运 ...

  10. Python中函数、类、模块和包的调用

    初学python阶段,大多数人对函数.类.模块和包的调用都搞得不是很清楚,这篇随笔就简单的进行说明. (1)函数 当函数定义好之后,可以直接调用. 比如:def summ(add1,add2),那么 ...

随机推荐

  1. NOIP模拟13「工业题·卡常题·玄学题」

    T1:工业题 基本思路   这题有一个重要的小转化: 我们将原来的函数看作一个矩阵,\(f(i,j-1)*a\)相当于从\(j-1\)向右走一步并贡献a,\(f(i-1,j)*b\)相当于从\(i-1 ...

  2. Abp Vnext3 vue-admin-template(二用户退出)

    先修改用户退出,中午有点困先改简单的 退出代码在src\layout\components\Navbar.vue代码如下,讲流程这里不需要修改 methods: { toggleSideBar() { ...

  3. SparkPi的编程计算

    Pi的计算方式有很多,本文主要是通过Spark在概论统计的方法对Pi进行求解: 算法说明: 在边长为R的正方形中,其面积为R^2,而其内接圆的面积为pi * R^2 /4 ,圆的面积与正方形的面积比为 ...

  4. Elasticsearch(ES)的滚动搜索与批量操作

    1. 概述 今天我们来聊一下Elasticsearch(ES)的滚动搜索与批量操作. 2. Elasticsearch(ES)的滚动搜索 2.1 概述  滚动搜索我们经常能够用到,例如:推荐列表,此类 ...

  5. PHP中的输出:echo、print、printf、sprintf、print_r和var_dump

    大家在面试中,经常会被问到的问题: 请简要说明PHP的打印方式都有哪些? 或者直接点问: 请说明echo.print.print_r的区别 看着很简单,一般会出现在初中级的笔试题中.但是要真正说明白这 ...

  6. 动态查看及加载PHP扩展

    在编译并完成 php.ini 的配置之后,我们就成功的安装了一个 PHP 的扩展.不过, PHP 也为我们提供了两个在动态运行期间可以查看扩展状态以及加载未在 php.ini 中进行配置的扩展的函数. ...

  7. 创建一个新的解耦的Orchard Core CMS网站

    引言本文将介绍创建一个功能齐全.解耦的CMS网站的过程,该网站允许您编辑博客帖子并呈现它们.解耦是一种开发模型,其中站点的前端和后端(管理)托管在同一个Web应用程序中,但只有后端由CMS驱动.然后, ...

  8. Jmeter系列(12)- 上传接口压测

    step-1上传接口分析 上传接口源码分析:分析上传文件类型.有无大小限制.存放上传文件服务器 没有源码通过抓包工具,或者Chrome查看框架源代码 接口路径/uploadfile,接口请求POST, ...

  9. WPF进阶技巧和实战03-控件(5-列表、树、网格04)

    ListView控件 ListView继承自简单的没有特色的ListBox,增加了对基于列显示的支持,并增加了快速切换视图或显示模式的能力,而不需要重新绑定数据以重新构建列表. ListView类继承 ...

  10. 3.docker容器常用命令

    docker容器的常用命令 docker有很多命令,让我们一个一个全部背下来,基本是不可能的,帮助文档的作用就很大了,想要查询那个命令,直接去找帮助文档,帮助文档地址:https://docs.doc ...