python杂记

一:

用import导入模块中所有成员

import math
print(math.sin(1.23))

from...import..导入特定或者所有成员

from math import cos,tan
print(cos(2.23))

from math import *
print(tan(1.1))

as指定别名,原名就不能用了

import math as m
print(m.sin(20))

from math import cos as c
print(c(2))

二:

python标准输出的空格重定向

from io import StringIO
import sys
print(sys.stdout.__class__.__name__)
#TextIOWrapper  谷歌翻译是一个文本io说唱歌手...
old_stdout = sys.stdout#stdout就当成指针对象,这里就是对原来的内存空间起别名
result = StringIO()#这里实例化时又起别名
sys.stdout = result#stdout改变指向,指向StringIO(),result也指向StringIO()
print('hello','world')#这里screen上没有输出,原本要输出的字符串会存储在stdout指向的内存空间,也就是修改了StringIO()指向的内存缓冲区,原本的输出流对象会输出到屏幕,StringIO()对象则会当成字符串存储起来,输出流对象要配合stdout指针对象才能用,输出流对象也有指针的感觉
sys.stdout = old_stdout     # 恢复标准输出,就是指向原来的空间
result_str = result.getvalue()#通过stdout修改StringIO()的内存空间,就相当于修改result指向的内存空间
print("逗号连接输出的是空格:",result_str)#这里是正常输出

 python标准输出的指定重定向


from io import StringIO
import sys

s1 = 'hello'
s2 = 'world'
n = 20
v = 12.44

old_stdout = sys.stdout#sys.stdout这玩意就是指定输出流对象的指针说白了,默认是sys.__stdout__标准输出流对象指针对象,还有文件指针对象,内存指针(StringIO对象)对象
result = StringIO()
sys.stdout = result
print(s1,True,n,v,sep='*')   # sep 是规定连接使用的符号
sys.stdout = old_stdout     # 恢复标准输出
result_str = result.getvalue()
print("逗号连接:",result_str)

 print函数还可以直接修改连接符号并且直接重定向输入到文件里面去

f = open(r"C:\Users\86193\Desktop\YYDSdest_dir\我想被写.txt", "w+")
print("hello world",file=f)#这里和stdout操作一样,不会输出到screen上,但是这里不是输入到一个StringIO内存文件里,是输入到指定文件里(利用文件指针)
f.close()

StringIO详解请看

python的StringIO_python stringio-CSDN博客

print重定向是在stdout基础上封装的

import sys
#创建一个文件描述符
f1=open("log.txt","w")
#将标准输出重定向到文件log.txt内
sys.stdout=f1
#写入信息
sys.stdout.write("Hello")
#恢复重定向
sys.stdout=sys.__stdout__

详情请见:

【Python 基础教程】Python中的输入输出_python输入输出流_酷尔。的博客-CSDN博客

三:

python子符串的格式化输出

s1 = 'hello'
s2 = 'world'
s = '<%s> <%s>' %(s1,s2)
print("格式化:",s)

join输出

s1 = 'hello'
s2 = 'world'
s = " ".join([s1,s2])
print("join连接:",s)
s="".join(['我',"你","ta"])
print(s)

字符串直接连接(用+号当然也可以)

S = "hello""world"
print(S)

字符串连接对象时让对象输出特定的内容


s1 = 'hello'
s2 = 'world'

class MyClass:
    def __str__(self):
        return 'Myclass'
my = MyClass()
s = s1 + str(my)
print(s)

四:

如何表示二进制,十进制,八进制,十六进制:

  1. 十进制
    n1 = 1234

  2. 二进制在前面加0b
    n2 = 0b1010111
    print(n2) # 但是输出87,仍然是十进制

  3. 八进制在前面加0o
    n3 = 0o123
    print(n3) # 但是输出83,仍然是十进制

  4. 十六进制前面加0x
    n4 = 0xF15
    print(n4) # 但是输出3861,仍然是十进制

进制之间的转换
  1. 十进制转换为二进制
    bin(120) # 输出为:0b1111000

  2. 十六进制转换为二进制
    bin(0xF012A) # 输出为:0b11110000000100101010

  3. 二进制转换为十进制
    int(‘0b10110’,2) # 在二进制数前加不加前缀都可以,但是需要在int的第二个参数写上需要转换的是几进制

  4. 十六进制转换为十进制
    int(‘F23AE’,16) # 输出为:992174

  5. 八进制转换为十进制
    int(‘233’,8) # 输出为155

  6. 十进制转换为十六进制
    hex(34321) # 输出为:0x8611

  7. 二进制转换为十六进制
    hex(0b1101101010) # 输出为:0x36a

  8. 十进制转换为八进制
    oct(1234) # 输出为:0o2322

除了十进制,其他进制因为前缀的存在,在python中都以字符串类型存在;在python中可以直接进行三种进制之间的运算,但是输出仍然是十进制 

print(0b1101010 * 0xF12 * 0o423 * 12)

十进制转换为2,8,16进制的另外一种方法:

'{:o}'.format(11)   输出为十进制11对应的八进制b
'{:x}'.format(11)   输出为十进制11对应的十六进制13
'{:b}'.format(11)   输出为十进制11对应的二进制

二进制:数值前面加0b
八进制:数值前面加0o
十六进制:数值前面加0x
其中b,o,x不区分大小写

二进制转换函数:bin
十进制转换函数:int
十六进制转换函数:hex
八进制转换函数:oct

五:

lambda表达式和字典值排序

a = [
	{'name':'Bill','age':40},
	{'name':'Mike','age':112},
	{'name':'Johb','age':29}
	]
print(a)
print(sorted(a,key = lambda x : x['age']))#key要函数参数

a.sort(key= lambda x : x['age'],reverse = True)
print(a)
"""-------------------------"""

def fack1():
	print("人生苦短,我用python")
def fack2():
	print("如何提高python的运行速度")
fack1=fack2
#说明python中的函数名和c类语言中一样都存的是地址(指针变量),并且也可以覆盖(改变指向),lambda函数覆盖修改函数就是这样的原理,这一套本来也更符合面向对象的思想
#这俩函数名指向的是同一个内存空间(函数对象)了(起别名),py中变量名就是指针变量(自动解引用),可以借鉴c中函数指针
fack1()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值