python小tips
函数:
格式:
def 函数的名字():函数体例如:def playgame():print("I am playing!")函数调用:
playgame()
调用的方法: 函数名()
函数的定义只是定义函数,调用了才会有结果
函数的参数
分类:1.形参:在函数定义的时候,需要准备一些变量来接收信息1.位置参数,按照位置一个一个声明变量2.默认值参数,在函数声明的时候给变量一个默认值,如果实参不传递信息,此时默认值生效,否则就不生效
def luru(name, age, gender="男"):print(name, age, gender)luru("张三", 18) # 张三 18 男
luru("李四", 18)
luru("王二麻子", 18)
luru("赵敏", 18, "女") # 赵敏 18 女
luru("周芷若", 18, "女")
luru("吴老二", 18)
3.动态传参1. * 参数名(args) 表示接收所有的位置参数的动态传参,接收到的值被统一放在元组里2. ** 参数名(kwargs) 表示接收所有的关键字的动态传参,接收到的值统一放在字典里
def chi(*food): # * 表示位置参数的动态传参,*接收到的值会被统一放在一个元组里面print(food)chi('大米饭', "烧茄子", "紫菜蛋花汤") # ('大米饭', '烧茄子', '紫菜蛋花汤')
chi("大米饭") # ('大米饭',)# 关键字参数的动态接收
def chi(**food): # ** 表示接收关键字的动态传参,接收到的所有参数都会被处理成字典print(food)chi(zhu="小米饭", tang="胡辣汤", ) # {'zhu': '小米饭', 'tang': '胡辣汤'}
混合使用的顺序:位置参数 > *args > 默认值 > **kwargs上述参数可以随意搭配使用;位置参数 在 默认值参数之前2.实参:实际调用的时候传递信息1.位置参数,按照位置进行参数传递2.关键字参数,按照参数的名字进行传递参数
def chi(zhu, fu, tang, tian):print(zhu, fu, tang, tian)chi("大米饭", '西红柿炒鸡蛋', "紫菜蛋花汤", "哈根达斯") # 位置参数chi(zhu="小米饭", tang="胡辣汤", fu="西红柿炒鸡蛋", tian="老冰棍") # 关键字参数chi("小米饭","胡辣汤", tang="西红柿炒鸡蛋", tian="老冰棍") # 混合参数
3.混合参数 (位置参数放前面,关键字参数放后面---> 否则报错)实参在执行的时候,必须保障形参有数据
open(xxxx,mode="xx",encoding="xxxx") # xxxx是文件名,这个就是混合参数
* 在实参位置,是把列表打散成位置参数进行传递** 在实参位置,可以把字典自动转化成关键字参数进行传递
def func(*args):print(args)# list少量元素
func(stu_lst[0], stu_lst[1], stu_lst[2], stu_lst[3],) # ('流川枫', '樱木', '大老王', '隔壁二老王')# list 大量元素
func(*stu_lst) # * 在实参位置,是把列表打散成位置参数进行传递# ** 在实参位置,可以把字典自动转化成关键字参数进行传递
# ('流川枫', '樱木', '大老王', '隔壁二老王')
返回值
返回值:函数执行之后,会给调用方一个结果,这个结果就是返回值关于return: 函数只要执行到了return,函数就会立即停止并返回内容,函数内的return后续代码不会执行
def func(a, b):# print(a + b)return a + bret = func(10, 30)
print( ret * 3) # 90# 不写return
def func():passret = func()print(ret) # None# 写了return但没有返回值
def fun():print(1223)return # 不管return有没有返回值,只要读到return就会让程序停止,后续代码不会执行,有点像循环里的breakprint(234)ret = fun()
print(ret) # 1223 None
1.如果函数里没有return,此时函数收到的是什么? 默认收到的时None 2.如果写了return1.只写了return 后面不跟数据 (充当的break情况)2.return 值,此时表示函数有一个返回值,外界能收到一个数据 (用的最多)3.return 值1,值2,值3.... 此时函数有多个返回值,外界收到的是什么呢 外界收到的是元组,且该元组内存放所有返回值
内置函数(上)
内置函数: 直接拿来用的函数 例:print, input和数学运算相关数据类型: bool、 int、 float、 complex(复数)进制转换:bin(二进制)、oct(八进制), int(十进制),hex(十六进制)数学运算:sum, min, max, pow(次方)
# 进制
a = 18
print(bin(a)) # 0b10010 二进制
print(oct(a)) # 0o22 八进制
print(hex(a)) # 0x12 十六进制b = 0b10011
print(int(b)) # 19 二进制转十进制# 数学运算
# pow
c = 10
d = 3
print(pow(c, d)) # 1000
print(c ** d) # 1000 表示的也是次方# max , min , sum
lst = [12, 32, 57, 789, 1000]
print(max(lst)) # 1000
print(min(lst)) # 12
print(sum(lst)) # 1890
和数据结构相关列表和元组: list, tuple相关内置函数:slice(切片)字符串:str,format,bytes,ord(把文字转化成unicode编码中的码位), chr(把unicode编码的码位转化为文字), repr相关内置函数:len, enumerate(能够直接拿到索引和元素), all(当作and看), any(当作or看), zip, filter, map, sorted,
# 列表
s = {1, 3, 4}
lst = list("呵呵哒") # list 内部有个for循环
print(lst) # [1, 3, 4] ['呵', '呵', '哒']
# list的原理
for item in s:lst.append(item)
lst = list("呵呵哒")
print(lst) # ['呵', '呵', '哒']s = slice(1, 4, 3) # [1: 4:3] 从1切到4,每3个出来一个
print("呵呵呵呵呵呵"[s]) # 呵# format, ord, chr
# format 格式化
a = 18
print(format(a, "b")) # 二进制 10010print(format(a, "08b")) # 需要一个由0补充的8位的二进制 00010010 只能补齐,不能切割
c = 12000
print(format(c, "08b")) # 10111011100000print(format(a, "o")) # 八进制 22
print(format(a, "x")) # 十六进制 12# ord, chr
a = '中' # python的内存是unicode
print(ord(a)) # 20013 “中”在unicode中码位是20013
print(chr(20013)) # 中 给出编码位置,展示出文字# enumerate, all, any,
# all, any
print(all([12, "呵呵", "豆沙包"])) # 把all当作and来看 True
print(all([0, "呵呵", "豆沙包"])) # False,有一个空就是false
print(any([0, "呵呵", "豆沙包"])) # True 把any当作or来看
print(any([0, "", ""])) # False,全是空就是falselst = ["张无忌", "张翠山", "张三丰","张大大"]for item in enumerate(lst):print(item)
'''
(0, '张无忌')
(1, '张翠山')
(2, '张三丰')
(3, '张大大')
'''
for index,item in enumerate(lst):print(index,item)
# # 等价于下面
for i in range(len(lst)):print(i, lst[i])
'''
0 张无忌
1 张翠山
2 张三丰
3 张大大
'''
其他id (字符串的内存地址)help() dir() (告诉当前数据能执行的操作)print(dir(s))
python进阶
作用域
作用域:变量的访问权限全局变量:顶格写,全局作用域局部变量:内侧 ,局部作用域总结: 里面访问外面没问题,外面访问里面不能直接访问
def func():c = 199return c # 想要在函数外面访问到函数里面的东西,必须要return,必须!c1 = func() # 此时调用的func是c的值
print(c1) # 199
函数的嵌套
结论(*):1.函数可以作为返回值进行返回2.函数可以作为参数进行相互传递函数实际上就是一个变量名,都表示一个内存地址
def fun1():passdef fun2():fun1() # 这个叫函数的调用,不叫嵌套fun2()def func1():b = 20def func2(): # 函数的嵌套print(b)func2() # 20 局部的东西,一般都是在局部自己访问使用的# func1内部的func2函数访问了局部变量b,并且在调用func1()时输出了20。# 外部无法直接访问b和func2,因为它们是在func1内部定义的局部变量和函数。
func1() # 20 这算直接调用func1()
print(func1()) # None
# 输出 None 是因为函数 func1 没有明确地返回任何值。在 Python 中,如果函数没有显式使用 return 语句返回一个值,它将默认返回 None。
print(b) # 访问不了,外面没办法访问里面
print(func2) # 访问不了,外面没办法访问里面# 函数嵌套执行过程
def func1():print(123)def func2():print(234)def func3():print(345)print(1)func3()print(2)print(3)func2()print(4)func1()
"""
只有调用了才会执行
123
3
234
1
345
2
4"""def func():def inner():print(123)print(inner) # <function func.<locals>.inner at 0x000001C7CD54B520> 打印出来的是函数func的局部变量inner的地址return inner # 返回的是函数,如果返回inner(),返回的是None,把函数当成一个变量进行返回b1 = func() # b1是func的返回值,此时是b1内部的inner
print(b1) # <function func.<locals>.inner at 0x000001A8F892B520> 和inner一样
b1() # 123# 在外部调用局部变量
def an():print(123)an() # 123bn = an # 把an赋值给了bn
bn() # 123 此时的bn()就是an()# 函数就是一个变量!# 代理模式
def func(an):# print(an) # 传入func的变量,打印该变量本身an() # 传入func的函数,执行该函数
# 实参可以是函数
def target():print("我是target")c = 123
func(c) # 123 给func传变量c,调用func,输出123
func(target) # <function target at 0x000001FDC715B520> 给func()传函数,调用func,返回的是传入函数的地址# 用的是 print(an)
func(target) # 我是target 说明实参可以是函数
两个关键字global,nonlocal
global:在局部引入全局变量 nonlocal: 在局部,引入外层的局部变量
a = 10
def func():# 此时就想要在函数内部修改全局变量a,怎么办?global a # 把外面的全局变量引入到局部a = 20 # 创建一个局部变量,并没有改变全局变量中的afunc()
print(a) # 10 为什么还是10(按理说应该是20)? 只写了a = 20不行# 有了global a ,a的结果变成20 20def func():a = 10def func2():nonlocal a # 向外找一层,看有没有该变量,如果有就引入,如果没有,继续向外扩一层,直到全局(不包括)a = 20func2()print(a)func() # 10# 20 (nonlocal a)
闭包
闭包:本质:内层函数对外层函数的局部变量的使用,此时内层函数被称为闭包函数1. 可以让一个变量常驻于内存2. 避免全局变量被修改
def func():a = 10 # 把成员变量变成局部变量,将其保护起来def inner():nonlocal aa += 1return areturn inner # 此时inner构成闭包函数ret = func() # inner ==> ret ==> 什么时候执行r1 = ret()
print(r1) # 11r2 = ret()
print(r2) # 12
装饰器
函数回顾:
1. 函数可以作为参数进行传递 2. 函数可以作为返回值进行返回 3. 函数名称可以当成变量一样进行赋值
# 1.函数可以作为参数传递
def func():print("我是函数")def gggg(fn):fn()gggg(func) # 我是函数# 2.函数可以作为返回值进行返回
def func():def inner():print("123")return innerret = func()
ret() # 123# 3.函数名称可以当成变量一样进行赋值
def func1():print("我是函数1")def func2():print("我是函数2")
func1 = func2
func1() # 我是函数2
装饰器: --> 要求记住最后的结论装饰器本质上是一个闭包作用:在不改变原有函数调用的情况下,给函数增加新功能直白:可以在函数前后添加新功能,但不改原代码应用: 在用户登录的地方,日志,通用装饰器写法:def wrapper(fn): wrapper: 装饰器,fn:目标函数def inner(* args, **kwargs):# 在目标函数执行之前ret = fn(* args, **kwargs) # 执行目标函数# 在目标函数执行之后return retreturn inner # 千万不能加小括号@wrapperdef target():passtarget() # ==> inner()一个函数可以被多个装饰器装饰@wrapper1@wrapper2def target():print('我是目标')target()作用顺序: wrapper1 wrapper2 target wrapper2 wrapper1
def wrapper1(fn): # fn: wrapper2.innerdef inner(*args, **kwargs):print("这里是wrapper1,进") # 1ret = fn(*args,**kwargs) # 调用 fn : wrapper2.innerprint("这里是wrapper1,出") # 4return retreturn innerdef wrapper2(fn): # fn : targetdef inner(*args, **kwargs):print("这里是wrapper2,进") # 2ret = fn(*args,**kwargs) # targetprint("这里是wrapper2,出") # 4return retreturn inner@wrapper1 # target = wrapper1(wrapper2.inner) ==> target:wrapper1.inner
@wrapper2 # target = wrapper2(target) 此时的target是wrapper2的inner
def target():print('我是目标')target()wrapper1 wrapper2 target wrapper2 wrapper1
"""
这里是wrapper1,进
这里是wrapper2,进
我是目标
这里是wrapper2,出
这里是wrapper1,出
"""
相关文章:
python小tips
函数: 格式: def 函数的名字():函数体例如:def playgame():print("I am playing!")函数调用: playgame()调用的方法: 函数名() 函数的定义只是定义函数,调用了才会有结果 函数的参…...
分布式版本控制工具软件——Git概述
目录 一、Git概述1.为什么要学习Git?(1)SCM概念(2)SCM实现 2.什么是版本控制?(1)版本控制软件的基础功能(2)集中式版本控制(3)分布式版…...
【一百零八】【算法分析与设计】P1908 逆序对,P1637 三元上升子序列,树状数组区间和应用
P1908 逆序对 逆序对 题目描述 猫猫 TOM 和小老鼠 JERRY 最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。 最近,TOM 老猫查阅到一个人类称之为“逆序对”的东西,这东西…...
【RK3568】制作Android11开机动画
Android 开机 logo 分为两种:静态显示和动态显示。静态显示就是循环显示一张图片;动态显示就是以特定帧率顺序显示多张图片 1.准备 android logo 图片 Android logo最好是png格式的,因为同一张图片的情况下,png 格式的比 jpg和b…...
chrony内网同步服务器时间
当前需要在10.26.24.62和10.26.24.61两个服务器上设置chrony同步时间,其中10.26.24.62为NTP时间服务器,10.26.24.61去10.26.24.62同步时间 检查Chrony配置文件: 确认10.26.24.62(NTP服务器)的配置文件 /etc/chrony/c…...
SSM物流管理系统的设计与实现-计算机毕业设计源码44323
摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作…...
STM32CubeIDE使用过程记录
最近在做一款机器人的开发,使用到了STM32CubeIDE,这里记录一些使用技巧方便后续查阅。 STM32CubeIDE使用过程记录 快捷键开启代码自动补全功能看门狗设置CRC设置IO口取反定时器设置 及 定时器中断外部中断GPIO配置STC15单片机GPIO模式配置片内闪存&#…...
angular2开发知识点
目录 文章目录 一、API 网关地址 配置二、服务注册使用三、模块组件注册使用四、html中style类动态绑定1. 单个类的绑定:[class.special]"isSpecial"2. 多个类的绑定:[ngClass]"{selected:status ,saveable: this.canSave,}"3. 单个…...
【机器学习】机器学习与智能交通在智慧城市中的融合应用与性能优化新探索
文章目录 引言机器学习与智能交通的基本概念机器学习概述监督学习无监督学习强化学习 智能交通概述交通流量预测交通拥堵管理智能信号控制智能停车管理 机器学习与智能交通的融合应用实时交通数据分析数据预处理特征工程 交通流量预测与优化模型训练模型评估 智能信号控制与优化…...
走的人多了,也便成了路(七)
好多年前就听到这样的说法:一流的企业做标准,二流的企业做品牌,三流的企业做产品。 在通信行业待久了,经历了移动通信技术标准的发展历程,体会到很多事情没有那么神秘,甚至由于一些偶然因素的出现ÿ…...
UE5中在地形中加入湖、河
系统水资产添加 前提步骤123 完成 前提 使用版本 UE5.0.3,使用插件为UE内置的Water和water Extras. 步骤 1 记得重启 2 增加地形,把<启用编辑图层>勾选 如果地形没有勾选上编辑图层,那么就会导致湖、河等水景象无法融入地形。 如果忘记勾选…...
【280个shell脚本】----提示运维工作效率
1.MySQL 数据库备份单循环 #!/bin/bash DATE$(date %F_%H-%M-%S) HOSTlocalhost USERbackup PASS123.com BACKUP_DIR/data/db_backup DB_LIST$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v "Database|information_schema…...
从零开始搭建Electron项目之运行例程
最好的学习方式就是:给一段能够运行的代码示例。 本文给出了例程资源,以及运行的步骤。 在国内开发electron有一点特别不好,就是如果不爬梯子,下载依赖容易出错。 一、例程资源 到如下路径下载例程到本地。 GitCode - 全球开发者…...
MySQL逻辑备份
目录 一.mysqldump 基本命令: 参数选项: 示例 备份整个数据库 备份多个数据库 备份所有数据库 仅备份数据库结构 仅备份特定表 添加选项以有效处理锁表问题 恢复数据 恢复数据库 恢复库中的表 使用source恢复 注意事项 二. mysqlpu…...
python 获取网页链接图片
python 获取 网页图片 在Python中,可以使用requests库获取网页内容,再使用BeautifulSoup解析网页,提取图片链接,最后保存图片到本地。以下是一个简单的例子: import requests from bs4 import BeautifulSoup import o…...
Leetcode 力扣114. 二叉树展开为链表 (抖音号:708231408)
给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 1…...
文刻ai工具跟绘唐AI工具有什么区别
文刻AI工具和绘唐AI工具是两种不同的人工智能工具。点击查看 文刻AI工具是一种自然语言处理工具,可以用于生成、修改和校对文本。它可以帮助用户更高效地写作,提供词汇和语法建议,检查拼写和语法错误,并提供自动补全和自动纠正功…...
手写kNN算法的实现-用欧几里德空间来度量距离
kNN的算法思路:找K个离预测点最近的点,然后让它们进行投票决定预测点的类型。 step 1: kNN存储样本点的特征数据和标签数据step 2: 计算预测点到所有样本点的距离,关于这个距离,我们用欧几里德距离来度量(其实还有很多…...
IGraph使用实例——线性代数计算(blas)
1 概述 在图论中,BLAS(Basic Linear Algebra Subprograms)并不直接应用于图论的计算,而是作为一套线性代数计算中通用的基本运算操作函数集合,用于进行向量和矩阵的基本运算。然而,这些基本运算在图论的相…...
【MySQL】(基础篇五) —— 排序检索数据
排序检索数据 本章将讲授如何使用SELECT语句的ORDER BY子句,根据需要排序检索出的数据。 排序数据 还是使用上一节中的例子,查询employees表中的last_name字段 SELECT last_name FROM employees;输出结果: 发现其输出并没有特定的顺序。其实…...
C++ C_style string overview and basic Input funcitons
write in advance 最近在做题,遇到一个简单的将console的输入输出到文件中的简单题目,没有写出来。悔恨当初没有踏实地总结string 相关的 I/O 以及与文件的操作。这篇文章旨在记录基础的字符I/O, 简单常用的文件I/O操作函数。 当然,你会说C…...
VS2022+Qt雕刻机单片机马达串口上位机控制系统
程序示例精选 VS2022Qt雕刻机单片机马达串口上位机控制系统 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《VS2022Qt雕刻机单片机马达串口上位机控制系统》编写代码,代码整洁&a…...
Android Ble低功耗蓝牙开发
一、新建项目 在Android Studio中新建一个项目,如下图所示: 选择No Activity,然后点击Next 点击Finish,完成项目创建。 1、配置build.gradle 在android{}闭包中添加viewBinding,用于获取控件 buildFeatures {viewB…...
Visual Studio的快捷按键
Visual Studio的快捷按键对于提高编程效率至关重要。以下是一些常用的Visual Studio快捷按键,并按照功能进行分类和归纳: 1. 文件操作 Ctrl O:打开文件Ctrl S:保存文件Ctrl Shift S:全部保存Ctrl N:…...
【WEB系列】过滤器Filter
Filter,过滤器,属于Servlet规范,并不是Spring独有的。其作用从命名上也可以看出一二,拦截一个请求,做一些业务逻辑操作,然后可以决定请求是否可以继续往下分发,落到其他的Filter或者对应的Servl…...
[书生·浦语大模型实战营]——LMDeploy 量化部署 LLM 实践
1.基础作业 1.1配置 LMDeploy 运行环境 创建开发机 创建新的开发机,选择镜像Cuda12.2-conda;选择10% A100*1GPU;点击“立即创建”。注意请不要选择Cuda11.7-conda的镜像,新版本的lmdeploy会出现兼容性问题。其他和之前一样&…...
TiDB-从0到1-配置篇
TiDB从0到1系列 TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务TiDB-从0到1-MVCCTiDB-从0到1-部署篇TiDB-从0到1-配置篇 一、系统配置 TiDB的配置分为系统配置和集群配置两种。 其中系统配置对应TiDB Server(不包含TiKV和PD的参数࿰…...
微信小程序按钮设计与交互:打造极致用户体验
微信小程序作为一种流行的应用形式,其界面设计和交互体验对于用户吸引力和留存率至关重要。其中,按钮作为用户与小程序进行交互的主要方式之一,其设计和实现直接影响到用户体验的质量。在本文中,我们将探讨微信小程序按钮的设计与…...
ES6中如何使用class和extends关键字实现继承?
在ES6中,可以使用class关键字来定义类,使用extends关键字来实现继承。下面是一个示例: // 父类 class Parent {constructor(name) {this.name name;}sayHello() {console.log(Hello, my name is ${this.name});} }// 子类 class Child ex…...
Linux:基本指令
文章目录 ls指令pwd指令cd指令touch指令mkdir指令rmdir指令 && rm指令cp指令man指令echo指令输出重定向追加重定向 cat指令输入重定向 mv指令which指令alias指令more && less指令head && tail指令事件相关的指令date显示时间戳 cal指令find指令grep指令…...
了解目前网站建设情况/怎么搞自己的网站
成功项目团队中应树立的五种意识 人常说:"一个中国人是龙,一群中国人是虫。"由于中西方文化的差异,似乎中国人更擅长单兵作战。所以,项目团队的管理在我国显得特别需要。笔者总结了数年来在IT行业项目管理的经验和教训…...
网站内容优化关键词布局/上海企业网站seo
pytorch端和libtorch端转的每一步都需要验证精度,一般情况下,就debug看看两天的tensor值最开始的或者结尾一不一样,一般相差10的-4就没有问题,实在不行就根据形状随机的写下标,写几个看看值是否差不多。下面具体说明&a…...
怎么建立网站管理系统/厦门网站推广费用
python 文件操作 python:目录与文件操作 os.listdir(dirname):列出dirname下的目录和文件 os.getcwd():获得当前工作目录 os.curdir:返回但前目录(’.’) os.chdir(dirname):改变工作目录到dirname os.path.isdir(name):判断name是不是…...
数据分析案例网站/无锡今日头条新闻
服务器终端输入命令 jupyter notebook --no-browser --port8889 本地终端输入命令 ssh -N -f -L localhost:8888:localhost:8889 usernameip username和ip替换为服务器的username和ip地址 本地打开浏览器,http://localhost:8888/ 即可访问 可能出现的问题 如果ju…...
网站制作技术/百度一级代理商
glEnable(GL_RASTERIZER_DISCARD); 使用GL_RASTERIZER_DISCARD标志作为参数调用glEnable()函数,告诉渲染管线在transform feedback可选阶段之后和到达光栅器前抛弃所有的图元。 glDisable(GL_RASTERIZER_DISCARD);...
做网站产品资料表格/做个小程序需要花多少钱
我正在建立一个网站并且有一个我似乎无法解决的小问题,我创建了一个高度为100%的div,里面的div是一个滑块div,高度为100%,问题是第一个div显示高度为0px,以便滑块div下面的div显示在滑块div后面,任何可以帮助我的人?这是我的代码:…...