fun(args, *kwargs)

python 函数中经常会遇到 fun(*args, **kwargs) 注意如下:

# 测试环境 python3.6
# * 用来传递人一无名参数,在函数体内以 tuple 访问
# ** 用来传递任意有名(键值)参数,在函数体内以 dict 访问
def fun(*args, **kwargs):  
    print(args)
    print(kwargs)
    print(kwargs['a'])
    for arg in args:
        print(arg)
fun(1, 2, 3, 4, 5, 6, 7, 8, a=1, b=2)  

str2hexstr

在做串口助手的时候要把接收到的数据十六进制显示就可以使用此方法

# 十六进制输出字符串, 并插入空格
my_str = '1234567'  
hex_str = " ".join("{:02x}".format(ord(c)) for c in my_str)  
print(hex_str)  

str() 和 repr()

这两个区别我在python3.6打印字符串、浮点数的时候只是发现字符串多出了''浮点数精度并没有变化,应该是 python3 底层做了优化,一直没有找到好的区分点,所以尝试打印时间才发现不同之处:

# str()  出来的值是给人看的
# repr() 出来的值是给python看的,可以通过eval()重新变回一个Python对象
# str()  一般是将数值转成字符串
# repr() 是将一个对象转成字符串显示,注意只是显示用,有些对象转成字符串没有直接的意思
# 如list,dict使用str()是无效的,但使用repr可以,这是为了看它们都有哪些值,为了显示之用
# 典型用法
import datetime  
today = datetime.datetime.now()  
print(str(today))  
print(repr(today))  
try:  
    print(type(eval(str(today))))
except SyntaxError:  
    print('can not eval str today!')
print(type(eval(repr(today))))  

在函数中为了输出直观易懂我们有时候需要重写 __repr__()__str__() 函数:

# 函数中的重写 repr 和 str 方法
# Python program to demonstrate writing of __repr__ and
# __str__ for user defined classes

# A user defined class to represent Complex numbers
class Complex:  
    # Constructor
    def __init__(self, real, imag):
        self.real = real
        self.imag = imag

    # For call to repr(). Prints object's information
    def __repr__(self):
        return 'Rational(%s, %s)' % (self.real, self.imag)
        # For call to str(). Prints readable form

    def __str__(self):
        return '%s + i%s' % (self.real, self.imag)

t = Complex(10, 20)  
print(str(t))  
print(repr(t))  

input() 和 raw_input()

python 中搜集用户输入使用 input() ,但是python2.x如果需要输入字符串要输入'haha'请注意 haha 外面的引号,如果不输入引号,在调用输入值的时候会报错,此时为了方便就要使用原始字符串接收rawinput();在 python3 中直接使用 input(),废除了 rawinput():

# python3 中没有 raw_inut
name = input("Hello What's your name?")  
print("hello " + name + "!")  

字符串、原始字符串、unicode 字符串

字符串在打印的时候会接受转义,原始字符串 r'str' 不会转义, 注意 python3 中所有字符串都是 unicode

# 字符串转义和原始字符串
print('C:\n\hha')  
# 不能在字符串结尾使用\,把'转义了
print(r'C:\n\hha')

# 在 python3 中所有字符串都是 unicode 字符串
uni = u'haha'  
print(uni)