python学习笔记-06

news2024/12/25 0:59:23

函数进阶

1.无参数无返回值:这类函数往往用于提示信息打印
2.无参数有返回值:这类函数往往用于数据采集过程中
3.有参数有返回值:这类函数一般是计算型的
4.有参数无返回值:这类函数多用于设置某些不需要返回值的参数设置

1.局部变量

局部变量的作用域只在局部,出了作用域就不能使用了。不同的函数可以定义相同的局部变量,但是都是各自用各自的,不会产生影响。

局部变量可以是任何类型。

print('---------局部变量-----------')
def Part1():
    a=1
    print(a)
    pass
def Part2():
    a=2
    print(a)
    pass
Part1()
Part2()
print(a)   #局部变量只在局部起作用,出了范围后就会释放掉

在这里插入图片描述

2.全局变量

全局变量定义在全局,作用域为全局,什么类型都行。

print('---------全局变量-----------')
pro='全局变量'
def All1():
    print('在All1函数中使用全局变量:',end=' ')
    print(pro)
    pass
def All2():
    print('在All2函数中使用全局变量:',end=' ')
    print(pro)
    pass
print('在函数体外使用全局变量:', end=' ')
print(pro)
All1()
All2()

当全局变量和局部变量名称相同时,优先使用函数内部的变量
但是要注意出现这种情况时,在声明局部之前不可以使用,不然会报错

print('---------全局变量-----------')
pro='全局变量'
def All1():
    print('在All1函数中使用全局变量:',end=' ')
    print(pro)
    pro='改变全局变量的值'
    print('改变全局变量的值后的输出:',end=' ')
    print(pro)
    pass
print('在函数体外使用全局变量:', end=' ')
print(pro)
All1()

在这里插入图片描述
报错👆
正确的使用方法:

print('---------全局变量-----------')
pro='全局变量'
def All1():
    pro='改变全局变量的值'
    print('改变全局变量的值后的输出:',end=' ')
    print(pro)
    pass
print('在函数体外使用全局变量:', end=' ')
print(pro)
All1()

在这里插入图片描述
在函数中修改的全局变量出函数之后就会回归为原来的全局变量值。如果想要彻底修改,需要用到global关键字:

Qu='全局变量'
print(Qu)
def All():
    global Qu
    Qu='变量'
    pass
All()
print(Qu)

在这里插入图片描述

3.引用

在python中,值是靠引用传递的,可以用id()查看一个对象的引用是否相同,id是值存在内存中那块地址的标识。

a=1    #不可变类型,如int类型等
def fun1(x):
    print('x的内存地址{}'.format(id(x)))
    print('x的值%d'%x)
    x=2
    print('改完x的值后x的内存地址{}'.format(id(x)))
    print('此时x的值是%d'%x)
    pass
print('a的内存地址{}'.format(id(a)))
fun1(a)
print('a的值是{}'.format(a))

在这里插入图片描述
如果是可变类型,数据是同步变化的:

li=[]  #可变类型
def fun1(x):
    print('x的内存地址{}'.format(id(x)))
    x.append([1,2,3,4])
    print('x的内存地址{}'.format(id(x)))
    print('此时的x{}'.format(x))
    pass
print('li的内存地址{}'.format(id(li)))
fun1(li)
print('此时的列表{}'.format(li))
print('由此可以看出可变类型在内部函数改变值后,可以传到外面')

在这里插入图片描述

在python中,所有的东西都是对象,在函数调用的时候,实参传递的就是对象的引用,参数传递是通过对象引用完成的。

4.匿名函数

python中使用lambda关键字创建匿名函数,所谓匿名函数是指这个函数没有名字,不用def创建标准的函数。

lambda 参数1,参数2,参数3: 执行代码语句..
匿名函数冒号后面的表达式有且只有一个,是表达式不是语句
自带return,结果就是表达式计算结果
只能实现简单逻辑,复杂逻辑实现不了
M=lambda x1,x2:x1+x2
print(M(1,2))

#用正常实现:
def fun1(n1,n2):
    return n1+n2
print(fun1(1,2))

#lambda和三元运算:
def fun2(a):
    if a==1:
        return 1
    else:
        return 2
    pass
n=lambda a:1 if a==1 else 2
print(fun2(2))
print(n(1))
#python中的幂运算:
print(2**4)

在这里插入图片描述

5.递归函数

递归函数就是一直调用自己,不调用其他函数的函数。递归函数必须有一个结束的条件,否则递归无法结束一直运行会死循环或到达最大递归深度后报错。

print('-----------循环求阶乘-------------')
#求阶乘:
def fun1(n):
    i=1
    sum=1
    while i<=n:
        sum*=i
        i+=1
        pass
    return sum
print(fun1(10))
print('---------递归方式求阶乘------------')
#递归求阶乘:
def fun2(n):
    if n==1:
        return n
    else:
        return n*fun2(n-1)
    pass
print(fun2(10))

在这里插入图片描述

#递归小练习:
#取文件
import os  #引入文件操作模块
def findFile(file_path):
    listRs=os.listdir(file_path)  #得到路径中所有文件夹
    for item in listRs:
        full_path=os.path.join(file_path,item)   #获取完整的文件路径
        if os.path.isdir(full_path): #判断是否是文件夹
            findFile(full_path)    #如果是文件夹就继续遍历
        else:
            print(item)
            pass
        pass
    else:
        return
    pass
findFile('D:\\octaveFunction')  #多打一个\转义

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

实验2:RIPv2的配置

由于RIPv1是有类别的路由协议,路由更新不携带子网信息,不支持不连续子网、VLSM、手工汇总和验证等&#xff0c;本书重点讨论RIPv2。 1、实验目的 通过本实验可以掌握&#xff1a; RIPv1和 RIPv2的区别。在路由器上启动RIPv2路由进程。激活参与RIPv2路由协议的接口。auto-sum…

一个提问高下立见?国产AI大模型冲上扣子广场PK

以“国产GPTs”出名的扣子&#xff0c;做出了GPT没有的功能。 6月12日&#xff0c;字节跳动旗下的AI应用开发平台“扣子”&#xff08;Coze国内版&#xff09;悄悄上线了新功能“模型广场”。 扣子是AI应用开发平台&#xff0c;无论用户是否有编程基础&#xff0c;都可以在扣子…

OpenTiny CCF开源创新大赛赛事指南,助力你赢取10W赛事奖金

第七届CCF开源创新大赛在国家自然科学基金委信息科学部的指导下&#xff0c;由中国计算机学会&#xff08;CCF&#xff09;主办&#xff0c;长沙理工大学、CCF 开源发展委员会联合承办。大赛面向国家“十四五”开源生态发展战略布局&#xff0c;聚焦“卡脖子”软件领域以及人工…

clickhouse学习笔记(四)库、表、分区相关DDL操作

目录 一、数据库操作 1、创建数据库 2、查询及选择数据库 3、删除数据库 二、数据表操作 1、创建表 2、删除表 3、基本操作 ①追加新字段 ②修改字段类型或默认值 ③修改字段注释 ④删除已有字段 ⑤移动数据表&#xff08;重命名&#xff09; ⑥清空表 三、默认值…

【leetcode刷题】面试经典150题 , 27. 移除元素

leetcode刷题 面试经典150 27. 移除元素 难度&#xff1a;简单 文章目录 一、题目内容二、自己实现代码2.1 方法一&#xff1a;直接硬找2.1.1 实现思路2.1.2 实现代码2.1.3 结果分析 2.2 方法二&#xff1a;排序整体删除再补充2.1.1 实现思路2.1.2 实现代码2.1.3 结果分析 三、…

day12--150. 逆波兰表达式求值+239. 滑动窗口最大值+ 347. 前 K 个高频元素

一、150. 逆波兰表达式求值 题目链接&#xff1a;https://leetcode.cn/problems/evaluate-reverse-polish-notation/description/ 文章讲解&#xff1a;https://programmercarl.com/0150.%E9%80%86%E6%B3%A2%E5%85%B0%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B1%82%E5%80%BC.html 视频…

QT 的文件

QT 和C、linux 一样&#xff0c;也有自带的文件系统. 它的操作和C、c差不多&#xff0c;不过也需要我们来了解一下。 输入输出设备类 QObject 有一个子类&#xff0c;名为 QIODevice 类&#xff0c;如其名字&#xff0c;该类是管理所有输入输出设备的类。 比如文件、网络套…

Java获取本机IP地址的方法(内网、公网)

起因是公司一个springboot项目启动类打印了本机IP地址加端口号&#xff0c;方便访问项目页面&#xff0c;但是发现打印出来的不是“无线局域网”的ip而是“以太网适配器”ip&#xff0c;如下图所示 这样就导致后续本地起项目连接xxl-job注册节点的时候因为不在同个局域网下ping…

Arcgis投影问题

今天下载数据&#xff0c;右键查看属性&#xff0c;发现只有地理坐标系&#xff0c;在arcgis里面进行展示有点丑 怎么变成下面的&#xff1f; 步骤1&#xff1a;加载数据 打开ArcGIS Pro或ArcMap。在目录窗口中&#xff0c;右键点击“文件夹连接”或“文件夹”选项&#xff0c…

苹果的后来者居上策略:靠隐私保护打脸微软

01.苹果与微软相比更注重用户隐私 我一直是Windows的忠实用户&#xff0c;但微软疯狂地将人工智能融入一切&#xff0c;让我开始觉得应该咬咬牙换成Mac。 自小我几乎只用Windows电脑&#xff0c;所以我对MacOS一直不太适应。虽然Windows 11有其缺点&#xff0c;但总的来说&am…

设计四大基本原则的全面解析

每每问起设计四大基本原则&#xff0c;无论是蜚荣全球的业内大咖还是初出茅庐的张三李四&#xff0c;都会不约而同地告诉你一个答案&#xff1a;亲密性、对齐、重复、对比。 自罗宾威廉姆斯于《写给大家看的设计书》中提出后&#xff0c;四大基本原则涵盖了品牌、电商、包装、…

【数据结构初阶】--- 堆

文章目录 一、什么是堆&#xff1f;树二叉树完全二叉树堆的分类堆的实现方法 二、堆的操作堆的定义初始化插入数据&#xff08;包含向上调整详细讲解&#xff09;向上调整删除堆顶元素&#xff08;包含向下调整详细讲解&#xff09;向下调整返回堆顶元素判断堆是否为空销毁 三、…

时间同步概念及常见的时间同步协议NTP PTP

一、前言 前面几篇文章介绍了Linux中的各种各样的时间、时钟源以及时间维护的方式&#xff0c;其中在timekeeper等数据结构中&#xff0c;我们当时略过了NTP相关的字段&#xff0c;为了补充这一段内容&#xff0c;从本篇开始会介绍时间同步的基本概念、及常见的时间同步协议&am…

2024年春季学期《算法分析与设计》练习15

问题 A: 简单递归求和 题目描述 使用递归编写一个程序求如下表达式前n项的计算结果&#xff1a; (n<100) 1 - 3 5 - 7 9 - 11 ...... 输入n&#xff0c;输出表达式的计算结果。 输入 多组输入&#xff0c;每组输入一个n&#xff0c;n<100。 输出 输出表达式的计…

定时器介绍之8253芯片

目录 定时器简介 8253功能介绍 组成 工作原理 相关引脚 启动方法 计数方式 实现 读取计数值 定时器简介 8253功能介绍 内部结构 相关引脚 计数器组成 工作原理 启动方法 计数方式 初始化&#xff1a;写入控制字——>写入计数初值 实现 计数长度选择&#xff1a…

Python 全栈系列254 异步服务与并发调用

说明 发现对于异步(IO)还是太陌生了&#xff0c;熟悉一下。 内容 今天搞了一整天&#xff0c;感觉有一个long story to tell&#xff0c;但是不知道从何说起&#xff0c;哈哈。 异步(协程)需要保证链路上的所有环节都是异步(协程)的&#xff0c;任何一个环节没这么做都会导致…

CSS文本超限后使用省略号代替

方案一&#xff1a; 只显示一行&#xff0c;超限后使用省略号代替 .detail {overflow: hidden;text-overflow: ellipsis;white-space: nowrap; }方案二&#xff1a; 显示多行&#xff0c;到最后一行还没有显示完&#xff0c;则最后一行多出来的部分使用省略号代替。 .detai…

如何通过Appium连接真机调试

1、打开appium&#xff0c;点击启动appium服务器&#xff08;如图1&#xff09; 2、appium启动成功后&#xff0c;点击放大镜启动检查会话&#xff08;如图2&#xff09; 3、填写真机设备信息和APP的package、activity,点击启动会话&#xff08;如图3&#xff09; 4、打开运行A…

C#——字典diction详情

字典 字典: 包含一个key(键)和这个key所以对应的value&#xff08;值&#xff09;&#xff0c;字典是是无序的&#xff0c;key是唯一的&#xff0c;可以根据key获取值。 定义字典: new Diction<key的类型&#xff0c;value的类型>() 方法 添加 var dic new Dictionar…

头歌资源库(8)分发饼干

一、 问题描述 二、算法思想 我们可以使用贪心算法来解决这个问题。首先&#xff0c;我们将孩子们的胃口值和饼干的尺寸进行排序&#xff0c;从小到大。然后&#xff0c;我们从最小的胃口值和最小的饼干尺寸开始匹配。 我们使用两个指针i和j&#xff0c;分别指向孩子们的胃口…