函数

一。函数基础

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. python 逆序按行读取文件

    How to read a file in reverse order? import os def readlines_reverse(filename): with open(filename) ...

  2. H5、C3基础知识笔记

    HTML5 本文内容参考于"HTML5|W3scool"教程 简介 是最新的 HTML 标准,拥有新的语义.图形以及多媒体元素 提供了新的 API 简化了 web 应用程序的搭建 ...

  3. 浅谈 JVM GC 的安全点与安全区域

    OopMap 前文我们说到,JVM 采用的可达性分析法有个缺点,就是从 GC Roots 找引用链耗时. 都说他耗时,他究竟耗时在哪里? GC 进行扫描时,需要查看每个位置存储的是不是引用类型,如果是 ...

  4. WEB安全性测试之拒绝服务攻击

    1,认证 需要登录帐号的角色 2,授权 帐号的角色的操作范围 3,避免未经授权页面直接可以访问 使用绝对url(PS:绝对ur可以通过httpwatch监控每一个请求,获取请求对应的页面),登录后台的 ...

  5. Spring表达式

    一.SpEL 其中,直接写也可以赋值,' ' 单引号引起来后成为一个字符串对象,可以调用String的方法: 二.引用另外一个bean 装配这个类的bean: 1.第一种方法,property标签中使 ...

  6. Python - poetry(4)管理环境

    环境隔离 poetry 核心之一:使项目环境隔离,意味着始终和本地全局 Python 环境隔离 poetry 首先会检查当前项目是否在虚拟环境中运行:如果是将直接使用它,而不创建新的:如果不是,poe ...

  7. Markdown快捷键详解(源自狂神说Java视频,整理版)

    #加空格 表示是一个标题(一级标题)回车后直接生成 例下 Markdown学习 标题: ##(两个#号)空格加标题名字即为二级标题例下 二级标题 三个#号 加标题名字即为三级标题,与二级标题等有层级关 ...

  8. 使用zipKin构建NetCore分布式链路跟踪

    本文主要讲解使用ZipKin构建NetCore分布式链路跟踪 场景 因为最近公司业务量增加,而项目也需要增大部署数量,K8S中Pod基本都扩容了一倍,新增了若干物理机,部分物理机网络通信存在问题,导致 ...

  9. java版gRPC实战之七:基于eureka的注册发现

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  10. HDU - 3790 最短路径问题 (dijkstra算法)

    HDU - 3790 最短路径问题 Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费 ...