一:
用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)
四:
如何表示二进制,十进制,八进制,十六进制:
-
十进制
n1 = 1234 -
二进制在前面加0b
n2 = 0b1010111
print(n2) # 但是输出87,仍然是十进制 -
八进制在前面加0o
n3 = 0o123
print(n3) # 但是输出83,仍然是十进制 -
十六进制前面加0x
n4 = 0xF15
print(n4) # 但是输出3861,仍然是十进制
进制之间的转换
-
十进制转换为二进制
bin(120) # 输出为:0b1111000 -
十六进制转换为二进制
bin(0xF012A) # 输出为:0b11110000000100101010 -
二进制转换为十进制
int(‘0b10110’,2) # 在二进制数前加不加前缀都可以,但是需要在int的第二个参数写上需要转换的是几进制 -
十六进制转换为十进制
int(‘F23AE’,16) # 输出为:992174 -
八进制转换为十进制
int(‘233’,8) # 输出为155 -
十进制转换为十六进制
hex(34321) # 输出为:0x8611 -
二进制转换为十六进制
hex(0b1101101010) # 输出为:0x36a -
十进制转换为八进制
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()