文章目录
python函数相关
定义和返回
def func(abc):
print abc
return 1
b = func("abc") #b会接收返回值
要点
def是定义
return是返回
python数据类型
字符串转int
默认十进制:
abc=12
b = int(abc)
16进制:
abc=12
b = int(abc, 16)
注意入参必须是int或者string 否则需要转化 比如string 需要str(abc)
python循环判断
ctl-001 if判断
if num == 0:
print num
if num != 0:
print num
python打印相关
dy001-如何不换行打印
print("abc", end="") #python3 指定不换行
print("abc"), #python2 用,指定不换行
dy002-如何格式化输出指定宽度 {:<10}
使用字符串的格式化操作来实现输出固定宽度的文本。最常见的方法是使用字符串的 .format() 方法或 f-strings(在 Python 3.6 及更高版本中可用)来进行格式化。
- 使用 .format() 方法:
name = "Alice"
age = 30
city = "New York"
# 输出固定宽度的文本
output = "{:<10} {:<5} {:<15}".format(name, age, city)
print(output)
< 符号表示左对齐,数字表示字段的宽度
效果:
Alice 30 New York
- 使用 f-strings:
name = "Bob"
age = 25
city = "Los Angeles"
# 输出固定宽度的文本
output = f"{name:<10} {age:<5} {city:<15}"
print(output)
与 .format() 方法相比,f-strings 更简洁,但只适用于 Python 3.6 及更高版本。
python字符串相关
zf-003 python字符串拆分
- 根据\n拆成数组,注意\n不会存在了
str="ab\nc\n"
shuzu=str.split("\n")
进阶1:使用拆分出来的数组下标
str="ab\nc\n"
shuzu=str.split("\n")
shuzu[0] #第0个
shuzu[1] #第1个
shuzu[-1] #倒数第1个
shuzu[2:4] #第 2 3个,没有4
shuzu[2:] #第2个到最后
进阶2:其他分割方式
str="ab\nc\n"
shuzu=str.split(" ") #空格
shuzu=str.split(":") #:
shuzu=str.split("bc") #bc分割 注意bc不会在了
注意分割之后如果数组不够 访问越界会out of list报错
zf-002 python 字符串替换
替换换行为空
str="abc\n"
str=str.replace("\n", "")
要点:python str是流式换行符也是一个,使用replace全局替换 也可以多个字符串替换
zf-001 python如何按照16进制打印int数字
num = 21
print("{0:#0x}".format(num))
参数顺序:
0 第一个参数
:# 带有前缀(比如最后指定是x 是16进制 前缀是0x)
0 0填充
x 16进制
进阶:
num = 21
print("{0:#0x} %d".format(num) %num)
python gdb相关
参考gdb文章,此处仅少量撰写
gdb-001 python如何指定gdb的命令
output = gdb.execute("info register")
进阶1:指定转化为字符串 不然是Nonetype
output = gdb.execute("info register", to_string=True)
进阶2:调用printf
output = gdb.execute("printf "\"0x%016x\", (struct task_struct*)0xffffff12", to_string=True)
进阶3:设置变量 后面再用
output = gdb.execute("set $abc={0:#0x}".format(num), to_string=True)
output = gdb.execute("p *(struct task_struct*)$abc".format(num), to_string=True)
注意gdb的变量都需要$
format是字符串的函数 输出16进制的num到abc里面
原理推测:python执行期间启动一个环境变量 与shell不太一样
进阶4:指定函数 函数中执行gdb
def test():
output = gdb.execute("set $abc={0:#0x}".format(num), to_string=True)
output = gdb.execute("p *(struct task_struct*)$abc".format(num), to_string=True)
注意参数可以通过gdb在调用函数前进行设置到gdb全局变量中
python 时间相关
t-001 python如何根据当前时间加上秒计算下一个时间
import datetime
st = datetime.datetime(2023,08,17)
delta=datetime.timedelta(3600) #s
endtime = st + delta
print endtime #tatetime结构
print endtime.strftime('%Y-%m-%d %H:%M:%S') #string结构
推测原理:
datetime.datetime指定年月日,根据1970计算s,
然后用秒,转化为datetime结构的数据
两种datetime计算,得到新的datetime就是新的值
如果要格式化转化,datetime的strftime进行格式化为字符串。
推测datetime内部格式存储了一些快速计算格式
since 1692203803