初学python-day9 函数1(已更新)
函数
一。函数基础
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(已更新)的更多相关文章
- Python day9函数部分
函数的学习:函数对于一门编程语言来说挺重要的,尤其是c语言,是完全使用函数来编写的 1.函数的定义:逻辑结构化和过程化的一种编程方法 def squre(x): "求一个数的平方 retur ...
- python—day9 函数的定义、操作使用方法、函数的分类、函数的嵌套调用
一.函数的定义 函数的四个组成部分: 函数名. 函数体. 函数返回值. 函数参数 1.概念:重复利用的工具,可以完成特定功能的代码块,函数是存放代码块的容器 2.定义: def:声明函数的关键词 函数 ...
- 初学 Python(十三)——匿名函数
初学 Python(十三)--匿名函数 初学 Python,主要整理一些学习到的知识点,这次是匿名函数. # -*- coding:utf-8 -*- #关键字lambda定义的函数都是匿名函数 #做 ...
- 初学 Python(十二)——高阶函数
初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 ...
- 初学Python(九)——函数
初学Python(九)--函数 初学Python,主要整理一些学习到的知识点,这次是函数. 函数定义: # -*- coding:utf-8 -*- #函数的定义 def my_function(x) ...
- python基于函数替换的热更新原理介绍
热更新即在不重启进程或者不离开Python interpreter的情况下使得被编辑之后的python源码能够直接生效并按照预期被执行新代码.平常开发中,热更能极大提高程序开发和调试的效率,在修复线上 ...
- python第六天 函数 python标准库实例大全
今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...
- Python虚拟机函数机制之位置参数(四)
位置参数的传递 前面我们已经分析了无参函数的调用过程,我们来看看Python是如何来实现带参函数的调用的.其实,基本的调用流程与无参函数一样,而不同的是,在调用带参函数时,Python虚拟机必须传递参 ...
- 初学python笔记
一.关于python ① 由荷兰人Guido van Rossum(龟叔)于1989年圣诞节为打发无聊时间所编写的编程语言. ② python的特点:优雅 明确 简单.代码量少,运行速度快. 缺点:运 ...
- Python中函数、类、模块和包的调用
初学python阶段,大多数人对函数.类.模块和包的调用都搞得不是很清楚,这篇随笔就简单的进行说明. (1)函数 当函数定义好之后,可以直接调用. 比如:def summ(add1,add2),那么 ...
随机推荐
- python 逆序按行读取文件
How to read a file in reverse order? import os def readlines_reverse(filename): with open(filename) ...
- H5、C3基础知识笔记
HTML5 本文内容参考于"HTML5|W3scool"教程 简介 是最新的 HTML 标准,拥有新的语义.图形以及多媒体元素 提供了新的 API 简化了 web 应用程序的搭建 ...
- 浅谈 JVM GC 的安全点与安全区域
OopMap 前文我们说到,JVM 采用的可达性分析法有个缺点,就是从 GC Roots 找引用链耗时. 都说他耗时,他究竟耗时在哪里? GC 进行扫描时,需要查看每个位置存储的是不是引用类型,如果是 ...
- WEB安全性测试之拒绝服务攻击
1,认证 需要登录帐号的角色 2,授权 帐号的角色的操作范围 3,避免未经授权页面直接可以访问 使用绝对url(PS:绝对ur可以通过httpwatch监控每一个请求,获取请求对应的页面),登录后台的 ...
- Spring表达式
一.SpEL 其中,直接写也可以赋值,' ' 单引号引起来后成为一个字符串对象,可以调用String的方法: 二.引用另外一个bean 装配这个类的bean: 1.第一种方法,property标签中使 ...
- Python - poetry(4)管理环境
环境隔离 poetry 核心之一:使项目环境隔离,意味着始终和本地全局 Python 环境隔离 poetry 首先会检查当前项目是否在虚拟环境中运行:如果是将直接使用它,而不创建新的:如果不是,poe ...
- Markdown快捷键详解(源自狂神说Java视频,整理版)
#加空格 表示是一个标题(一级标题)回车后直接生成 例下 Markdown学习 标题: ##(两个#号)空格加标题名字即为二级标题例下 二级标题 三个#号 加标题名字即为三级标题,与二级标题等有层级关 ...
- 使用zipKin构建NetCore分布式链路跟踪
本文主要讲解使用ZipKin构建NetCore分布式链路跟踪 场景 因为最近公司业务量增加,而项目也需要增大部署数量,K8S中Pod基本都扩容了一倍,新增了若干物理机,部分物理机网络通信存在问题,导致 ...
- java版gRPC实战之七:基于eureka的注册发现
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- HDU - 3790 最短路径问题 (dijkstra算法)
HDU - 3790 最短路径问题 Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费 ...