python基础知识总结(一)

时间:2022-03-04 02:36:07

学完python很久了,一直想着写个学习总结,奈何懒癌晚期,现在才开始写。以下是我总结的一小部分python基础知识点的总结:

1、什么是解释型语言?什么是编译型编程语言?

'''
解释型语言:无需编译,运行的时候有解释器转化为机器码,转化一句,执行一句
编译星语言:第一次需要编译,由编译器转化为机器码,之后运行无需再次编译
'''

2、位和字节的关系?

'''
最小的存储单位称为位(bit):只能容纳两个值(0或1)之一,不能在一个位中存储更多的信息。位是计算机存储的基本单位。
字节(byte)是常用的计算机存储单位:字节的标准定义:一个字节均为8位。由于上述所讲每个位或者是0或者是1,所以一个8位
的字节包含256种可能的0,1组合;
'''

3、列举几个 PEP8 规范


'''
不要在行尾加分号, 也不要用分号将两条命令放在同一行。
每行不超过80个字符(长的导入模块语句和注释里的URL除外)
用4个空格来缩进代码
*定义之间空2行, 方法定义之间空1行,*定义之间空两行, 比如函数或者类定义. 方法定义, 类定义与第一个方法之间, 都应该空一行. 函数或方法中, 某些地方要是你觉得合适, 就空一行.
按照标准的排版规范来使用标点两边的空格,括号内不要有空格,按照标准的排版规范来使用标点两边的空格
不要在逗号, 分号, 冒号前面加空格, 但应该在它们后面加(除了在行尾)
'''



4、各种编码的区别?
'''
ANSI即为ASCII编码,为一个字节,只用到0~127号字符。

Unicode编码为万国码,包含几乎世界上的所有字符,一般情况下为两个字节。

GBK编码为中国特有编码,但也是在ANSI基础上演变出来的,包含两个字节,其中中文编码与Unicode的中文编码不一样。

UTF-8为Unicode的一种实现编码,Unicode编码可以通过一定的规则进行转变。
'''

5、机器码与字节码的区别?


'''
  字节码是一种中间码,字节码通常指的是已经经过编译,但与特定机器码无关,需要直译器转译后才能成为机器码的中间代码
  机器码就是计算机可以直接执行,并且执行速度最快的代码。
'''

6、各种进制之间的转换:
'''
int(s,base)  #将其他进制转换为十进制,base是s的进制
bin(x)  #将一个十进制数转化为二进制数(即返回一个二进制数的字符串),x为十进制数(不是字符串)
oct(x)  #将一个十进制数转化为八进制数(即返回一个八进制数的字符串),x为十进制数(不是字符串)
hex(x)   #将一个十进制数转化为十六进制数(即返回一个十六进制数的字符串),x为十进制数(不是字符串)
chr(x) #将十进制转换为ASCII中相应的字符。
ord(s)   #将ASCII中相应的字符转换为十进制数。
'''

 7、递归的最大层数?

  默认最大次数为10008、三元运算规则以及应用场景?
a = 4
b = 3
c= a if a>1 else b #如果a大于1的话,c=a,否则c=b

#是条件判断的简写

 9、怎样实现数值交换?


a=1
b=2
a,b = b,a

10、列举布尔值为False的常见值?
'''
0(整型)
0.0(浮点型)
0L(长整型)
0.0+0.0j(复数)
""(空字符串)
[](空列表)
()(空元组)
{}(空字典)
'''

11、字符串、列表、元组、字典每个常用的5个方法?字符串:
'''
1,去掉空格和特殊符号

name.strip()  去掉空格和换行符

name.strip('xx')  去掉某个字符串

name.lstrip()  去掉左边的空格和换行符

name.rstrip()  去掉右边的空格和换行符

2,字符串的搜索和替换

name.count('x')  查找某个字符在字符串里面出现的次数

name.capitalize()  首字母大写

name.center(n,'-')   把字符串放中间,两边用- 补齐

name.find('x')   找到这个字符返回下标,多个时返回第一个;不存在的字符返回-1

name.index('x') 找到这个字符返回下标,多个时返回第一个;不存在的字符报错

name.replace(oldstr, newstr)  字符串替换

name.format() 字符串格式化
'''

列表:
list1 = ['apple','banana','apple']
list2 = []

#list1[a:b:c] 列表的索引
# 列表的增、删、改
list1.append(a)  # 在结尾加一个元素

list1.insert(1, a)  # 在指定位置增加元素,在a后b前插入y

a = list2.extend(list1)  # 将list_1和list_2合并

list1[4] = 'o'  # 修改第五个元素

list1[2:3] = [a,b]  # 修改连续的元素

list1.remove(list1[3])  # 删除下标为3的元素

list1.pop(2)  # 直接加下标

del list1[2]  删除列表中的下标为2的元素
del list1   直接删除掉列表

# 列表的一些方法
# count
list1.count('apple')  # count是计算出现次数的方法

# index
list1.index('banana')  # 寻找banana在哪个位置
# reverse
list1.reverse()  # 倒叙
# sort
list_5 = [6, 4, 3, 7, 5, 5, 8, 1]
list_5.sort()  # 排序(从小到大)
# clear
list_5.clear()  # 清空列表

元组:
# 元 组
 tuple1 = (1,)    # 只有一个元素的话,后面加一个逗号,对之后的学习有所帮助
 tuple2 = (1,2,3,4,5)
 # tuple2[2] = 10  # 元组是不可修改的

字典:

12、lambda表达式格式以及应用场景?
'''
lambda的一般形式是关键字lambda后面跟一个或多个参数,紧跟一个冒号,以后是一个表达式。
lambda是一个表达式而不是一个语句。它能够出现在Python语法不允许def出现的地方。
作为表达式,lambda返回一个值(即一个新的函数)。lambda用来编写简单的函数,而def用来处理更强大的任务
'''
x,y = 2,3
a = lambda x,y:x + y

13、pass的作用?
'''

    空语句 do nothing
    保证格式完整
    保证语义完整

'''

14、*arg和**kwarg作用    *arg会把多出来的位置参数转化为tuple    **kwarg会把关键字参数转化为dict15、、is和==的区别
'''
  ==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等
  is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同
'''

16、简述Python的深浅拷贝以及应用场景?
'''
  浅拷贝:copy.copy
  深拷贝:copy.deepcopy
对于int,str来说,三者(自身,浅拷贝,深拷贝)的id不变,其余的三者id都变了
'''

17、Python垃圾回收机制?
'''
  c1=ClassA()会创建一个对象,放在内存中,c1变量指向这个内存,这时候这个内存的引用计数是1
  del c1后,c1变量不再指向0x237cf58内存,所以这块内存的引用计数减一,等于0,所以就销毁了这个对象,然后释放内存。
    导致引用计数+1的情况
        对象被创建,例如a=23
        对象被引用,例如b=a
        对象被作为参数,传入到一个函数中,例如func(a)
        对象作为一个元素,存储在容器中,例如list1=[a,a]
    导致引用计数-1的情况
        对象的别名被显式销毁,例如del a
        对象的别名被赋予新的对象,例如a=24
        一个对象离开它的作用域,例如f函数执行完毕时,func函数中的局部变量(全局变量不会)
        对象所在的容器被销毁,或从容器中删除对象
'''

18、Python的可变类型和不可变类型?
'''
Python的每个对象都分为可变和不可变,主要的核心类型中,数字、字符串、元组是不可变的,列表、字典是可变的。
不可变是相同的内存里值是不可变的
可变是指,同一片内存,值可以发生变化
'''

19、常见内置函数
最常见的内置函数是:

print("Hello World!")

数学运算

abs(-5)                         # 取绝对值,也就是5

round(2.6)                       # 四舍五入取整,也就是3.0

pow(2, 3)                        # 相当于2**3,如果是pow(2, 3, 5),相当于2**3 % 5

cmp(2.3, 3.2)                   # 比较两个数的大小

divmod(9,2)                      # 返回除法结果和余数

max([1,5,2,9])                   # 求最大值

min([9,2,-4,2])                  # 求最小值

sum([2,-1,9,12])                 # 求和

类型转换

int("5")                        # 转换为整数 integer

float(2)                         # 转换为浮点数 float

long("23")                      # 转换为长整数 long integer

str(2.3)                        # 转换为字符串 string

complex(3, 9)                   # 返回复数 3 + 9i

ord("A")                        # "A"字符对应的数值

chr(65)                          # 数值65对应的字符

unichr(65)                       # 数值65对应的unicode字符

bool(0)                          # 转换为相应的真假值,在Python中,0相当于False

在Python中,下列对象都相当于False:[], (),{},0, None,0.0,''

bin(56)                         # 返回一个字符串,表示56的二进制数

hex(56)                         # 返回一个字符串,表示56的十六进制数

oct(56)                         # 返回一个字符串,表示56的八进制数

list((1,2,3))                   # 转换为表 list

tuple([2,3,4])                  # 转换为定值表 tuple

slice(5,2,-1)                    # 构建下标对象 slice

dict(a=1,b="hello",c=[1,2,3])   # 构建词典 dictionary

序列操作

all([True, 1, "hello!"])        # 是否所有的元素都相当于True值

any(["", 0, False, [], None])   # 是否有任意一个元素相当于True值

sorted([1,5,3])                  # 返回正序的序列,也就是[1,3,5]

reversed([1,5,3])               # 返回反序的序列,也就是[3,5,1]

类,对象,属性

    # define class
    class Me(object):
        def test(self):
            print "Hello!"  

    def new_test():
        print "New Hello!"  

    me = Me()  

hasattr(me, "test")              # 检查me对象是否有test属性

getattr(me, "test")              # 返回test属性

setattr(me, "test", new_test)    # 将test属性设置为new_test

delattr(me, "test")              # 删除test属性

isinstance(me, Me)               # me对象是否为Me类生成的对象 (一个instance)

issubclass(Me, object)           # Me类是否为object类的子类

20、filter、map、reduce的作用?
'''
map:
  o =  map(A,B ) A是映射函数,B是可迭代对象,o是可迭代对象
reduce:
  from functools import reduce
  a = reduce( A,(1,2,3)) 按照A函数归并
filter:过滤
  a = filter(A, B)把B中数据挨个拿出来,如果满足A函数要求,则放入a中
'''

21、一行代码实现9*9乘法表  
print('\n'.join(['\t'.join(["%2s*%2s=%2s"%(j,i,i*j) for j in range(1,i+1)]) for i in range(1,10)]))

 22、re的match和search区别?

'''
re.match()从开头开始匹配string。
re.search()从anywhere 来匹配string
'''

 23、如何用一行代码生成[1,4,9,16,25,36,49,64,81,100]

d =  [i * i for i in range(11) ]

 24、求结果 a: [ i % 2 for i in range(10) ], b: ( i % 2 for i in range(10) )

  a是一个列表,b是一个生成器

25、def func(a,b=[]) 这种写法有什么坑?

def func(a,b=[]):
    b.append(a)
    print(b)
func(1)
func(1)
func(1)
func(1)

看下结果

  [1]
  [1, 1]
  [1, 1, 1]
  [1, 1, 1, 1]

函数的第二个默认参数是一个list,当第一次执行的时候实例化了一个list,第二次执行还是用第一次执行的时候实例化的地址存储,所以三次执行的结果就是 [1, 1, 1] ,想每次执行只输出[1] ,默认参数应该设置为None。

26、一行代码实现删除列表中重复的值 ?

方法一:转化为集合

a = [1,2,4,5,6,5,4,3,7,8]
b = set(a)

方法二:用列表生成式

a = ['a', 'b', 'c', 'd', 'a', 'a']
b = [x for x in a if a.count(x) == 1]

 27、如何在函数中设置一个全局变量 ?

  关键字:global

28、常用字符串格式化哪几种?

(1).最方便的

print( 'hello %s and %s' % ('df', 'another df'))

但是,有时候,我们有很多的参数要进行格式化,这个时候,一个一个一一对应就有点麻烦了,于是就有了第二种,字典形式的。上面那种是tuple形式的。

(2).最好用的

print ('hello %(first)s and %(second)s' % {'first': 'df', 'second': 'another df'})

这种字典形式的字符串格式化方法,有一个最大的好处就是,字典这个东西可以和json文件相互转换,所以,当配置文件使用字符串设置的时候,就显得相当方便。

3.最先进的

print ('hello {first} and {second}'.format(first='df', second='another df'))


python基础知识总结(一)的更多相关文章

  1. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  2. python基础知识(二)

    以下内容,作为python基础知识的补充,主要涉及基础数据类型的创建及特性,以及新数据类型Bytes类型的引入介绍

  3. python 基础知识(一)

    python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...

  4. python基础知识讲解——@classmethod和@staticmethod的作用

    python基础知识讲解——@classmethod和@staticmethod的作用 在类的成员函数中,可以添加@classmethod和@staticmethod修饰符,这两者有一定的差异,简单来 ...

  5. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  6. python 爬虫与数据可视化--python基础知识

    摘要:偶然机会接触到python语音,感觉语法简单.功能强大,刚好朋友分享了一个网课<python 爬虫与数据可视化>,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个 ...

  7. python基础知识小结-运维笔记

    接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...

  8. Python基础知识(五)

    # -*- coding: utf-8 -*-# @Time : 2018-12-25 19:31# @Author : 三斤春药# @Email : zhou_wanchun@qq.com# @Fi ...

  9. Python基础知识(Basic knowledge)

    Python基础知识(Basic knowledge) 1.认识Python&基础环境搭建 2.Python基础(上) 3.Python基础(中) 4.Python基础(下) 5.Python ...

  10. Python 基础知识(一)

    1.Python简介 1.1.Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时 ...

随机推荐

  1. 深入理解Java的接口和抽象类&lpar;转&rpar;

    深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...

  2. 解决:sudo&colon; 无法解析主机:dinphy-500-310cn&colon; 连接超时

    出现这种问题是hosts文件没有配置好所导致的,linux无法解析到您的主机地址,解决方案如下: sudo vim /etc/hosts 其中vim是你的文本编辑器的命令,你如果电脑中没有vim,用g ...

  3. 结构struct

    1.结构变量 1)定义结构类型 struct student { char *name; int age; int score[3]; }; 2)定义结构变量 struct student stu1, ...

  4. 51nod1711 平均数

    二分答案.check有多少个区间的平均数>xbi=ai-x;将sm离散化.然后logn求出有多少个小于sm[i].类似于求逆序对的思路. 一直WA一个点...所以我就下载数据特判了TAT #in ...

  5. python运维开发&lpar;五&rpar;----模块、生成器

    内容目录 双层装饰器 字符串格式化 生成器和迭代器 递归 模块 双层装饰器 需求场景介绍: 现有用户登录系统,普通用户能查看自己相关信息的权限,管理员用户能查看所有用户的权限,可以做两个装饰器来实现需 ...

  6. ceph for openstack快速部署实施

    for el6 即centos6 1,添加ceph 官方yum源 [root@ruiy ~]# cat /etc/yum.repos.d/ceph.repo[ceph-noarch]name=Ceph ...

  7. 使用Java内置的Http Server构建Web应用

    一.概述 使用Java技术构建Web应用时, 我们通常离不开tomcat和jetty之类的servlet容器,这些Web服务器功能强大,性能强劲,深受欢迎,是运行大型Web应用的必备神器. 虽然Jav ...

  8. robot framework下载文件操作

    不同的浏览器点击[下载]按钮之后,需要点击保存,还是确定,或者直接默认直接下载都是不一样的 1.chrome:点击[下载]之后,会自动执行下载操作,直到下载结束 A)点击下载,等待下载结束(sleep ...

  9. hdu 1539 &amp&semi; poj 1416 某某公司

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1539 大意是输入n和m,把m按顺序拆分成若干个数,问这些数和的在小于n的前提下最大为多少 注意必须m的 ...

  10. java&period;lang&period;IllegalArgumentException&colon; findUserById is ambiguous in Mapped Statements collection

    这是由于mybatis的mapper  xml文件中的id 名字和mybatis内置的方法可能有冲突导致的,  更改xml 的id  名字就可以了!