python入门之函数调用-python之函数入门

python之函数入门

一. 什么是函数

二. 函数定义, 函数名, 函数体以及函数的调用

三. 函数的返回值

四. 函数的参数

五.函数名->第一类对象

六.闭包

一,什么是函数

函数: 对代码块和功能的封装和定义

二. 函数定义, 函数名, 函数体以及函数的调用

我们使用def关键字来定义函数

函数的定义语法: def 函数名()

函数体

如下

def fuc():

lst=[1,2,3,4,5,6,7,8,9]  #函数体

fuc()  #函数的调用

这里的函数名的命名规则和使用和变量基本一样

函数体: 就是函数被执行之后要执行的代码

函数的调用: 使用函数名可以调用函数, 写法: 函数名(), 这个时候函数的函数体会被执行

三. 函数的返回值

执行完函数之后. 我们可以使用return来返回结果.

如下:

def fuc():

ls= []

lst= [1,2,3,4,5,6,7,8,9]

for i in range(len(lst)):

if int(i) % 2 ==0:

ls.append(lst[i])

return ls    #返回值

ls_1=fuc()

print(ls_1)

函数中return的使用:

1. 函数中遇到return, 此函数结束, 不再继续执⾏.

2. 关于返回值:

如果return什么都不写 或者 干脆不写return .那么返回的就是None

如果return后面写了一个值. 则调用者可以接收一个结果

如果return后面写了多个结果, 则调用者可以接收一个tuple, 调用者可以直接解构成多个变量

四. 函数的参数

参数, 函数在调用的时候指定具体的一个变量的值. 就是参数

参数语法: def 函数名(参数列表):

函数体

def func(形参)

a = 10

ret=func(实参)

关于参数:

1. 形参

写在函数声明的位置的变量叫形参. 形式上的一个完整. 表示这个函数需要xxx

2. 实参

在函数调用的时候给函数传递的值. 叫实参, 实际执行的时候给函数传递的信息. 表示给函数xxx

3. 传参

给函数传递信息的时候将实际参数交给形式参数的过程被称为传参.

参数的分类:

在实参的角度来看. 分为三种:

1. 位置参数

2. 关键字参数

3. 混合参数, 位置参数必须在关键字参数前面

在形参的⾓角度来看,

1. 位置参数

2. 默认值参数(大多数传进来的参数都是一样的, 一般用默认参数)

五.第一类对象-> 函数名 -> 变量名

函数名可以像变量一样进行赋值

还可以作为列表的元素进行使用

还可以作为返回值返回

还可以作为参数进行传递

例子1.

def func1():

print("字符串")

def func2():

print("列表")

def func3():

print("字典")

def func4():

print("元组")

lst = [func1, func2, func3, func4] # 函数+() 就是调用.

print(lst)

for el in lst: # el是列表中的每一项.

el() # 拿到函数. 执行函数

例子2.

def wrapper():

def inner():

print("哈哈哈")

return inner # 函数名可以像返回值一样返回

ret = wrapper()#这里的ret就是inner

ret() # 在函数外面访问了函数内部的函数

例子3代理proxy.

# 函数可以作为参数进行传递

def func1():

print("字符串")

def func2():

print("列表")

def func3():

print("字典")

def func4():

print("元组")

# proxy即代理. 装饰器的雏形

def proxy(a): # a就是变量. 形参

a()

proxy(func1)#把func1赋值给a

proxy(func3)#把func2赋值给a

proxy(func4)#把func3赋值给a

六.闭包

闭包 -> 函数的嵌套

内层函数对外层函数中的变量的使用

闭包的优点:

1, 可以保护变量不被其他人侵害

2, 保持一个变量常驻内存

def wrapper():

name = "周杰伦" # 局部变量常驻与内存

def inner():

print(name) # 在内层函数中使用了外层函数的局部变量

return inner # 返回函数名

ret = wrapper() # ret是一个内层函数

ret() # ret是inner, 执行的时机是不确定的, 必须保证里面的name必须存在

如何通过代码查看一个闭包

__closure__: 有东西就是闭包. 没东西就不是闭包

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在线ajax测试,在线测试 - SosoApi,简单强大的api接口文档管理平台

背景:在实际项目开发协同过程中,特别是前后端由不同开发人员开发时,前端接口联调必须要等后端接口开发完成后才可以。这种方式使得前端极大的依赖于后端,使得原本可以并行的工作被阻塞了,特别是流程性质的功能。mock服…

【LeetCode笔记】124. 二叉树中的最大路径和(Java、二叉树、DFS)

文章目录题目描述思路 & 代码更新版题目描述 好家伙我可太激动了,第一次光速A困难题。应该是因为写过类似的二叉树的直径,不过这道倒是属于简单题。。面试常考题,刷codetop看到了就写写 思路 & 代码 递归过程是自底向上的递归过程…

jupyternotebook虚拟环境无法连接服务_详解pycharm连接远程linux服务器的虚拟环境的方法_python...

这篇文章主要介绍了pycharm连接远程linux服务器的虚拟环境的详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下一、前提条件1、确保linux服务器已经安装好虚拟环境,并且虚…

【LeetCode笔记】4. 寻找两个正序数组的中位数(Java、二分、递归)

文章目录题目描述思路 & 代码题目描述 算是拖了好久的题目 ,一开始刷的时候没打算直接冲困难不过面试常客了,还是得冲掉,而且不能留下心魔嘛!难点在于实现时间复杂度 O(log(m n)),显而易见得用二分法 思路 &a…

梦幻西游服务器每周几维护,梦幻西游5月6日维护公告:唯美版地图不再更新

为保证服务器的运行稳定和服务质量,《梦幻西游2》所有服务器将于2014年5月6日上午8:00停机,进行每周例行的维护工作。预计维护时间为上午8:00~9:30。如果在预定时间内无法完成维护内容,开机时间也将继续顺延。请各位玩家相互转告&…

浏览器市场占有率_全球市场占有率第一的谷歌浏览器添加对ipfs://的支持!

欢迎来到IPFS周报!👋星际文件系统(IPFS)是一种新的超媒体分布式协议,基于内容和身份的寻址。IPFS支持创建完全分布式应用程序。它旨在使网络更快,更安全,更开放。由于这是一个非常大的项目,我们在每期周报中…

win10 系统地图无法定位服务器,图文修复win10系统无法打开定位服务的详细技巧...

有很多网友在使用电脑的过程总难免会遇到win10系统无法打开定位服务的情况。尽管处理方法特别的容易,可是也有很多朋友不知道win10系统无法打开定位服务究竟要怎么处理。我就给大家整理总结了win10系统无法打开定位服务的解决方法,解决起来也不难&#x…

【LeetCode笔记】41. 缺失的第一个正数(Java、哈希)

文章目录题目描述思路 & 代码题目描述 难点在于时空复杂度的要求想出最优方法,需要认真理解题目。 思路 & 代码 做法:建立一个逻辑上的哈希表,令 nums[i] i 1,比如 nums[0] 1。那么第一个不符合这个要求的元素的下…

笔记本电脑如何保养_电脑保养只是吹一吹?别再被骗了,电脑没做这些就等于没保养...

汽车大约跑5000KM就需要保养一次,电脑与汽车一样,在使用一定时间的时候也需要保养一次,电脑保养对于很多朋友来说还是很陌生的,在这里小编就给大家做一个简单的科普,电脑保养主要指的是清理灰尘与更换硅脂,…

长春分享网站服务器迁移,网站迁移公告

现在经过将近3年的学习,我了解了更多。知道了Linux,等等。由于IIS的限制太多,我很早就有进行迁移的想法了。但是由于服务器一下子续了1年,一直到2021年2月份才能释放。并且我的网站的功能还挺复杂。国内外都有内容,这一…

【LeetCode笔记】199. 二叉树的右视图(Java、二叉树、层序遍历)

文章目录题目描述思路 & 代码题目描述 挺简单的,直接看思路代码吧。 思路 & 代码 就是一个层序遍历,取每层的最右边结点即可 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* T…

ibm笔记本电脑电池_笔记本电池怎么充电 笔记本电脑电池充电方法【详解】

笔记本电脑以其精致小巧的外形、方便携带的特点,受到了众多人士的喜爱。在 办公室 没有完成的工作,可以随时带到家中去完成,它的存在就是为了我们能有便捷的办公模式。那么对于这个日夜陪伴我们的好物件大家都是怎么充电的呢?方法…

服务器端接华为sdk无响应,关于sdk:华为SDC-SDK的踩坑记录

事件曾经过来了,大概花了8个小时解决问题。故障形容:通过python载入SDK的动态链接库报错,刚开始是报错126谬误,找不到模块,起初报错是不是无效的32位程序。开发环境:64位的python3.7,64位的win10&#xff0…

电脑键盘下划线怎么打_图文详解笔记本电脑键盘失灵怎么办

相信有很多朋友都遇到过笔记本键盘失灵的情况,其实笔记本键盘失灵的问题是可大可小的,下面小编就给大家详细介绍关于怎么解决笔记本电脑失灵的操作方法,让大家在遇到问题时自己就能够解决这些问题。方法一。1。右键单击桌面右下角的输入方法&…

【LeetCode笔记】69. x 的平方根(Java、二分)

文章目录题目描述思路 & 代码更新版题目描述 本质&#xff1a;找满足 k * k < x 的最大 k 思路 & 代码 二分&#xff0c;对满足 k * k < x 的最大 k进行查找。注意极端数据&#xff0c;用 long暴力法先来一个 class Solution {public int mySqrt(int x) {in…

opencv 模板匹配_详细剖析模板匹配

点击上方“新机器视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达模板匹配介绍我们需要2幅图像&#xff1a;原图像 (I): 在这幅图像里,我们希望找到一块和模板匹配的区域模板 (T): 将和原图像比照的图像块模板匹配就是在整个图像区域发现…

【LeetCode笔记】143. 重排链表(Java、链表、栈、快慢指针)

文章目录题目描述思路 & 代码更新版&#xff1a;快慢指针 翻转链表题目描述 一看题目反序&#xff1a;用栈更新&#xff1a;O(1) 空间复杂度 思路 & 代码 先快慢指针&#xff0c;找到需要入栈的起点&#xff0c;然后逐个入栈然后逐个出栈&#xff0c;进行重排即可…

hdfs中与file数组类似的数组_如何在 JavaScript 中克隆数组

作者&#xff1a;Yazeed Bzadough译者&#xff1a;allenJavaScript 有很多方法可以做任何事情&#xff0c;现在我们研究数组。1.扩展运算符(浅拷贝)自从 ES6 发布以来&#xff0c;这一直是最受欢迎的方法。这是一个简短的语法&#xff0c;你会发现它在使用像 React 和 Redux 这…

【LeetCode笔记】54. 螺旋矩阵(Java、迭代、递归)

文章目录题目描述思路 & 代码递归迭代更新版 - 递归题目描述 递归和迭代都实现了&#xff0c;递归相对比较好理解&#xff0c;也比较好实现 思路 & 代码 递归 每次都把最外圈的元素跑完一行 or 一列的时候&#xff0c;跑一次结束边界&#xff1a;left > right …

ubuntu boot空间不足_安装 Ubuntu 双系统

在很久以前就想试一试Linux了&#xff0c;一直没有实践。一是觉得太麻烦&#xff0c;二是怕把电脑弄坏。后来实践了一次后发现&#xff0c;其实并没有想象中那么难&#xff0c;这是一个完全独立的系统&#xff0c;与隔壁的Windows半毛钱关系都没有。把引导搞定就不怕了。另外&a…