当前位置: 首页 > news >正文

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

函数&#xff1a; 格式&#xff1a; def 函数的名字():函数体例如&#xff1a;def playgame():print("I am playing!")函数调用&#xff1a; playgame()调用的方法&#xff1a; 函数名() 函数的定义只是定义函数&#xff0c;调用了才会有结果 函数的参…...

分布式版本控制工具软件——Git概述

目录 一、Git概述1.为什么要学习Git&#xff1f;&#xff08;1&#xff09;SCM概念&#xff08;2&#xff09;SCM实现 2.什么是版本控制&#xff1f;&#xff08;1&#xff09;版本控制软件的基础功能&#xff08;2&#xff09;集中式版本控制&#xff08;3&#xff09;分布式版…...

【一百零八】【算法分析与设计】P1908 逆序对,P1637 三元上升子序列,树状数组区间和应用

P1908 逆序对 逆序对 题目描述 猫猫 TOM 和小老鼠 JERRY 最近又较量上了&#xff0c;但是毕竟都是成年人&#xff0c;他们已经不喜欢再玩那种你追我赶的游戏&#xff0c;现在他们喜欢玩统计。 最近&#xff0c;TOM 老猫查阅到一个人类称之为“逆序对”的东西&#xff0c;这东西…...

【RK3568】制作Android11开机动画

Android 开机 logo 分为两种&#xff1a;静态显示和动态显示。静态显示就是循环显示一张图片&#xff1b;动态显示就是以特定帧率顺序显示多张图片 1.准备 android logo 图片 Android logo最好是png格式的&#xff0c;因为同一张图片的情况下&#xff0c;png 格式的比 jpg和b…...

chrony内网同步服务器时间

当前需要在10.26.24.62和10.26.24.61两个服务器上设置chrony同步时间&#xff0c;其中10.26.24.62为NTP时间服务器&#xff0c;10.26.24.61去10.26.24.62同步时间 检查Chrony配置文件&#xff1a; 确认10.26.24.62&#xff08;NTP服务器&#xff09;的配置文件 /etc/chrony/c…...

SSM物流管理系统的设计与实现-计算机毕业设计源码44323

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…...

STM32CubeIDE使用过程记录

最近在做一款机器人的开发&#xff0c;使用到了STM32CubeIDE&#xff0c;这里记录一些使用技巧方便后续查阅。 STM32CubeIDE使用过程记录 快捷键开启代码自动补全功能看门狗设置CRC设置IO口取反定时器设置 及 定时器中断外部中断GPIO配置STC15单片机GPIO模式配置片内闪存&#…...

angular2开发知识点

目录 文章目录 一、API 网关地址 配置二、服务注册使用三、模块组件注册使用四、html中style类动态绑定1. 单个类的绑定&#xff1a;[class.special]"isSpecial"2. 多个类的绑定&#xff1a;[ngClass]"{selected:status ,saveable: this.canSave,}"3. 单个…...

【机器学习】机器学习与智能交通在智慧城市中的融合应用与性能优化新探索

文章目录 引言机器学习与智能交通的基本概念机器学习概述监督学习无监督学习强化学习 智能交通概述交通流量预测交通拥堵管理智能信号控制智能停车管理 机器学习与智能交通的融合应用实时交通数据分析数据预处理特征工程 交通流量预测与优化模型训练模型评估 智能信号控制与优化…...

走的人多了,也便成了路(七)

好多年前就听到这样的说法&#xff1a;一流的企业做标准&#xff0c;二流的企业做品牌&#xff0c;三流的企业做产品。 在通信行业待久了&#xff0c;经历了移动通信技术标准的发展历程&#xff0c;体会到很多事情没有那么神秘&#xff0c;甚至由于一些偶然因素的出现&#xff…...

UE5中在地形中加入湖、河

系统水资产添加 前提步骤123 完成 前提 使用版本 UE5.0.3,使用插件为UE内置的Water和water Extras. 步骤 1 记得重启 2 增加地形&#xff0c;把<启用编辑图层>勾选 如果地形没有勾选上编辑图层&#xff0c;那么就会导致湖、河等水景象无法融入地形。 如果忘记勾选…...

【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项目之运行例程

最好的学习方式就是&#xff1a;给一段能够运行的代码示例。 本文给出了例程资源&#xff0c;以及运行的步骤。 在国内开发electron有一点特别不好&#xff0c;就是如果不爬梯子&#xff0c;下载依赖容易出错。 一、例程资源 到如下路径下载例程到本地。 GitCode - 全球开发者…...

MySQL逻辑备份

目录 一.mysqldump 基本命令&#xff1a; 参数选项&#xff1a; 示例 备份整个数据库 备份多个数据库 备份所有数据库 仅备份数据库结构 仅备份特定表 添加选项以有效处理锁表问题 恢复数据 恢复数据库 恢复库中的表 使用source恢复 注意事项 二. mysqlpu…...

python 获取网页链接图片

python 获取 网页图片 在Python中&#xff0c;可以使用requests库获取网页内容&#xff0c;再使用BeautifulSoup解析网页&#xff0c;提取图片链接&#xff0c;最后保存图片到本地。以下是一个简单的例子&#xff1a; import requests from bs4 import BeautifulSoup import o…...

Leetcode 力扣114. 二叉树展开为链表 (抖音号:708231408)

给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 1&#xf…...

文刻ai工具跟绘唐AI工具有什么区别

文刻AI工具和绘唐AI工具是两种不同的人工智能工具。点击查看 文刻AI工具是一种自然语言处理工具&#xff0c;可以用于生成、修改和校对文本。它可以帮助用户更高效地写作&#xff0c;提供词汇和语法建议&#xff0c;检查拼写和语法错误&#xff0c;并提供自动补全和自动纠正功…...

手写kNN算法的实现-用欧几里德空间来度量距离

kNN的算法思路&#xff1a;找K个离预测点最近的点&#xff0c;然后让它们进行投票决定预测点的类型。 step 1: kNN存储样本点的特征数据和标签数据step 2: 计算预测点到所有样本点的距离&#xff0c;关于这个距离&#xff0c;我们用欧几里德距离来度量&#xff08;其实还有很多…...

IGraph使用实例——线性代数计算(blas)

1 概述 在图论中&#xff0c;BLAS&#xff08;Basic Linear Algebra Subprograms&#xff09;并不直接应用于图论的计算&#xff0c;而是作为一套线性代数计算中通用的基本运算操作函数集合&#xff0c;用于进行向量和矩阵的基本运算。然而&#xff0c;这些基本运算在图论的相…...

【MySQL】(基础篇五) —— 排序检索数据

排序检索数据 本章将讲授如何使用SELECT语句的ORDER BY子句&#xff0c;根据需要排序检索出的数据。 排序数据 还是使用上一节中的例子,查询employees表中的last_name字段 SELECT last_name FROM employees;输出结果&#xff1a; 发现其输出并没有特定的顺序。其实&#xf…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...