Python3补充知识点
时间:2022-07-28
本文章向大家介绍Python3补充知识点,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
[TOC]
####
Python与C数据类型
WeiyiGeek.基本数据类型在Python与C之间的对应关系
采用字典实现switch条件选择
描述:初学python语言,竟然很久才发现python没有switch-case语句,查看官方文档说是可以用if-elseif-elseif代替,同时也用其他的解决方案比较简单的就是利用字典来实现同样的功能。
写一个字典每个key对应的值是一个方法如:
switch = {“valueA”:lambda x,y:functionA(x,y),”valueB”:functionB,”valueC”:functionC}
示例演示:
#!/usr/bin/env python
# python中switch...case语句
#调用的函数
def add(x,y):
print("case c :switch c 字典形式调用add函数: %d + %d = %d" %(x,y,x+y))
def div(x,y):
return "switch b 字典调用div函数: %d + %d = %f" %(x,y,x/y)
#字典形式中的lambda表达式来实现switch语句效果
switch = {
'a':lambda x:x**2,
'b':lambda x,y:div(x,y),
'c':lambda x,y:add(x,y)
}
#采用 try...except来捕获异常
try:
print("case a : ", switch["a"](2)) #4
print("case b :", switch['b'](8,2)) #4.0
switch["c"](2,5) #根据字典key值来调用函数 #7
except KeyError as e:
print("捕获到异常!")
#执行结果
case a : 4
case b : switch b 字典调用div函数: 8 + 2 = 4.000000
case c :switch c 字典形式调用add函数: 2 + 5 = 7
ctype模块的三种不同动态库链接方式(python)
问题:如果理解函数调用的约定? 答:函数调用约定(calling convention) 描述了如何正确的方式调用某些特定类型的函数,包括了函数参数在站上的分配顺序,有哪些参数会被压入栈中,而那些参数将通过寄存器传入,以及在函数返回时函数栈的回收方式等;
两种最基本的函数调用约定:
- cdecl : 规定了函数参数列表
从右向左
顺序入栈,并有函数调用者负责清理栈上的参数,在X86架构被C编译器广泛使用; #C语言形式: int python_rocks(one, two, three) #x86汇编语言形式 (从右向左) push three push two push one call python_rocks add esp, 12 #每个参数占用四个字节空间 - stdcall :约定为Win32 API所广泛使用, #C语言形式: int python_myrocks(one, two, three) #x86汇编语言形式 (从右向左) push three push two push one call python_myrocks
两者之间的相同/区别:
- 相同:参数入栈顺序,两者函数调用都约定选用EAX寄存器存放函数返回值;
- 区别:回收函数栈的工作并非由函数调用者完成,而是有被调用者本身python_myrocks在函数返回前自相负责清除;
ctype模块的三种不同动态库链接方式:
- 1.cdll():用于加载那些遵循cdecl标准函数调用约定的链接库;
- 2.Windll():用于加载那些遵循从stdcall调用约定的动态链接库,stdcall是微软Win32API所使用的原生调用约定;
- 3.Oledll():使用方法与windll完全类似,只是oledll会假定其载入的函数会统一返回一个windows hresult错误编码,这些错误编码专门服务于微软的COM(组件对象模型)函数,用于表示错误信息;
- 点双连通分量与割点
- 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐
- 1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏
- 1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富
- 2463: [中山市选2009]谁能赢呢?
- 2748: [HAOI2012]音量调节
- 2697: 特技飞行
- 我这么玩Web Api(二)
- 1296: [SCOI2009]粉刷匠
- 1293: [SCOI2009]生日礼物
- 记一次线程池调优经历
- JavaScript对象
- 1088: [SCOI2005]扫雷Mine
- 1029: [JSOI2007]建筑抢修
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Datatables获取选中行的某一列的数据
- 终于懂了建造者模式
- (力扣)面试题04. 二维数组中的查找
- 一条命令查询电脑多久没关机
- Android Studio无法运行程序调试程序出现Unable to connect to ADB.Check the Event Log for possible issues.Verify th
- MySQL 中的 DML 语句执行流程,你理解的跟我一样吗?
- Android SharedPreferences的使用
- 【DB笔试面试846】在Oracle中,TWO_TASK环境变量的作用是什么?
- 分治策略之归并排序(Python实现)
- 分治策略之最大子数组(Python实现)
- 如何利用Gitlab-CI持续部署到远程机器?
- 动态规划之钢条切割问题:自顶向下(Python实现)
- 动态规划之钢条切割问题:自低向上(Python实现)
- Docker中安装Centos7操作系统
- 机器重启后 docker 容器启动报错 error creating overlay mount to