Python语法细节知识点(一)

  1. 在Linux或Mac平台直接运行.py文件,像window系统中的.exe文件一样,window系统会自动忽略这句话
#!/usr/bin/env python3
  1. 告诉Python解释器,按照UTF-8编码读取源代码
# -*- coding: utf-8 -*-
  1. Python允许用 r"" 表示 " 内部的字符串默认不转义
str = r"abc/t/n"
print(str)
# 打印内容 abc/t/n
  1. Python允许用’’’…’’'的格式表示多行内容,且里面的内容不会被转义

  2. ASCII编码和Unicode编码、UTF-8编码的区别

    ASCII 编码,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号。
    但随着编程语言的发展,各个国家都有自己制定的编码,像GB2312(中国),Shift_JIS(日本)等编码,ASCII码表里的字符远远支持不了开发。
    所以,Unicode编码就应运而生,Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
    Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。
    但是,现在出现了这样一个问题
    A 在ASCII码表里表示的是01000001,而在Unicode里表示的是00000000 01000001,如果我们书写的内容是全英的,就会十分浪费内存。
    故UTF-8编码应运而生。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,
    常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节
    
    字符ASCIIUnicode2UTF-8
    A0100000100000000 0100000101000001
    -00000000 0100000111100100 10111000 10101101

    在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时 候,就转换为UTF-8编码。用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件:

  3. Python提供了 ord() 函数获取字符的整数表示,chr() 函数把编码转换为对应的字符:

	str = '中'
    print(ord(str))
    print(chr(97))
    # 20013 a
  1. str通过 encode() 方法可以编码为指定的bytes,Python对bytes类型的数据用带 b 前缀的单引号或双引号表示。

    byte转换为str,使用 decode() 方法, 如果bytes中只有一小部分无效的字节,可以传入 errors=‘ignore’ 忽略错误的字节:

	str = "我愛你中國"
	   print(str.encode("utf-8")) #b'\xe6\x88\x91\xe6\x84\x9b\xe4\xbd\xa0\xe4\xb8\xad\xe5\x9c\x8b'
	
	   b = b'\xe6\x88\x91\xe6\x84\x9b\xe4\xbd\xa0\xe4\xb8\xad\xe5\x9c\x8b\xaa'
	   print(b.decode("utf-8", errors="ignore")) 	#我愛你中國
  1. Python 使用 % 或者 format 进行格式化字符串,使用%进行格式化,对于字符串里面包含%的str,使用“%%”进行转义
print("%s,您好,%s" % ("Scott","欢迎光临"))
print("{0}的小数点前两位是{1:.2f}".format("PI",3.1415926))
print("%s今年的数学成绩提高了%.2f%%" % ("小明",(86-72)/72*100)) #小明今年的数学成绩提高了19.44%
  1. 可变参数,*+变量名表示可变参数,可变参数在函数调用时自动组装为一个tuple
	def addNum(*num):
		sum=0;
		for i in num:
			sum += i
		return sum
  1. 关键字参数,允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。使用 **+变量名 表示关键字参数
  2. 命名关键字参数,参数需要一个特殊分隔符 *,*后面的参数被视为命名关键字参数。
def person(name, age, *, city='Beijing', job):
    print(name, age, city, job)
  1. 切片,list,tuple,str都可以被切[start : end : step]
[:] 						获得所有元素
[index:-1]			从后往前切
[::step]				每隔step切
  1. Python内置的 enumerate函数可以把一个list变成索引-元素对
# 遍历字典
    for key, value in dict.items():
        print(key,value)
# 遍历列表并且有索引
    for index, item in enumerate(num):
       print(index,item)
  1. 列表生成式
l1 = [i ** 2 for i in range(11)]
    list1 = [i if i % 2 == 0 else -i for i in range(10) ]
    list2 = [i**3 for i in range(15) if i%2==0]
  1. 生成器,使用 () 或者yield关键字
  2. isinstance(item,type)用来判断item是否属于type类型的
  3. map(function,iterable),map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回
  4. reduce,把一个函数作用在一个序列[x1, x2, x3, …]上,reduce把结果继续和序列的下一个元素做累积计算
    reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
    
  5. nonlocal n 声明变量n为 非内部函数的局部变量,可以引用外部定义的变量(基本数据类型),这样内部修改的话其变量,就不会报错了
  6. 匿名函数lambda x: x * x
    	关键字lambda表示匿名函数,冒号前面的x表示函数参数
    
  7. @functools.wraps 可以保持当前装饰器去装饰的函数的 name 的值不变
    def printNowTime(func):
    functools.wraps(func);
    def printTimeLog(*args, **kwargs):
        print("the %s() execute time is %s" % (func.__name__, time.process_time()))
        func(*args, **kwargs);
    return printTimeLog;
    
  8. functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单
    def decoratorLog(func):
    @functools.wraps(func)
    def wrapp(*args, **kwargs):
        print("call %s()" % (func.__name__));
        func(*args, **kwargs)
    return wrapp;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值