python面试必备-基础篇

 2023-09-13 阅读 29 评论 0

摘要:一.python中and, or, and-or语法   1.and 有假先出假   在Python中,and和or执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值;而是,返回它们实际进行比较的值之一。   在布尔上下文中从左到右演算表达式的值,如果

一.python中and, or, and-or语法

  1.and   有假先出假

  在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值;而是,返回它们实际进行比较的值之一。

  在布尔上下文中从左到右演算表达式的值,如果布尔上下文中的所有值都为真,那么 and 返回最后一个值。

python爬虫教程。如果布尔上下文中的某个值为假,则 and 返回第一个假值.

0, '' , [] , {}都是假

>>> 'a' and 'b'
'b'
>>> '' and 'b'
''
>>> 'a' and 'b' and 'c'
'c'
>>> True and False
False

  2.or   有真先出真

  使用 or 时,在布尔上下文中从左到右演算值,就像 and 一样。如果有一个值为真,or 立刻返回该值

  如果所有的值都为假,or 返回最后一个假值

python能做什么。  注意 or 在布尔上下文中会一直进行表达式演算直到找到第一个真值,然后就会忽略剩余的比较值

  

>>> 'a' or 'b'
'a'
>>> '' or 'b'
'b'
>>> '' or [] or {}
{}
>>> 0 or 'a' or 'c'
'a'

  

  3.and-or:

类似三目运算:"(a<b)?a:b"是一个"条件表达式",它是这样执行的: 如果a<b为真,则表达式取a值,否则取b值.

python和java,这个语法看起来类似于 C 语言中的 bool ? a : b 表达式。整个表达式从左到右进行演算,所以先进行 and 表达式的演算。 1 and 'first' 演算值为 'first',然后 'first' or 'second' 的演算值为 'first'

0 and 'first' 演算值为 False,然后 0 or 'second' 演算值为 'second'

and-or主要是用来模仿 三目运算符 bool?a:b的,即当表达式bool为真,则取a否则取b。

and-or 技巧,bool and a or b 表达式,当 a 在布尔上下文中的值为假时,不会像 C 语言表达式 bool ? a : b 那样工作。

>>> a='first'
>>> b='second'
>>> 1 and a or b
'first'
>>> (1 and a) or b
'first'
>>> 0 and a or b
'second'
>>> (0 and a) or b
'second'
>>> 

  4.安全使用and-or

>>> a=""
>>> b="second"
>>> (1 and [a] or [b])
['']
>>> (1 and [a] or [b])[0]
''
>>> 

python 类,由于 [a] 是一个非空列表,所以它决不会为假。即使 a 是 0 或者 '' 或者其它假值,列表 [a] 也为真,因为它有一个元素。

一个负责的程序员应该将 and-or 技巧封装成一个函数:

def choose(bool,a,b):return (bool and [a] or [b])[0]print  choose(1,'','second')    #''

二.python中filter()函数

filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

 

python的开发工具、三.python中的map()函数

 

四.python中的sort()函数

五.什么是lambda函数?它有什么好处?

lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数
lambda函数:首要用途是指点短小的回调函数
lambda [arguments]:expression
>>> a=lambdax,y:x+y
>>> a(3,11)

python和java哪个好, 

五.Python-copy()与deepcopy()区别

 

浅拷贝是对于一个对象的顶层拷贝 通俗的理解是:拷贝了引用,并没有拷贝内容

 深拷贝是对于一个对象所有层次的拷贝(递归)

python用什么软件。 

深拷贝和浅拷贝 都会给自己开辟一片空间存储数据

不同点: 

浅拷贝---只是开辟了最底层的一片空间 然后拷贝顶层引用

深拷贝---完全的把数据复制过来 开辟新的空间去存储数据  实现了数据的独立性

python为什么叫爬虫、切片拷贝 : 浅拷贝
字典的拷贝 : 浅拷贝

不可变类型(元组)----深拷贝浅拷贝都不会开辟空间了

注意点:
浅拷贝 不管元组中的数据是什么 都不会开辟空间
深拷贝 只要数据含有可变的类型 都会开辟空间进行递归拷贝

可变类型 Vs 不可变类型

可变类型(mutable):列表,字典

不可变类型(unmutable):数字,字符串,元组

这里的可变不可变,是指内存中的那块内容(value)是否可以被改变

copy.copy对于可变类型,会进行浅拷贝

     对于不可变类型,不会拷贝,仅仅是指向

 

03 私有化
_xxx 防止被导入
私有属性并非不可被外部访问
xxx_ 解决关键字重名的问题

04 import的导入
import xxx
import xxx,yyy
from xxx import *
from xxx import yyy
from xxx import yyy,zzz
import xxx as yyy


1 a.py


2 import a as b
b.xxx
a = 10

路径问题 import sys
sys.path
sys.path.insert(0,"xxx")

模块重复导入的问题
from imp import reload

多模块开发的时候 导入公共变量
import

05 多态的发生条件
1.发生继承
2.方法重写
3.调用被重写的方法
同一种形式 产生了不同的状态


 

01_多继承
1 父类名字.父类的方法 (需要self)
2 super().父类的方法 (不需要self)

1 浪费资源,造成bug
2 不会重复调用父类 __mro__顺序表

结论: 使用多继承的时候 使用super()

02_类中的各种概念
类对象 存放类相关的数据空间
实例对象 存放实例相关的数据的空间

类属性 存放在类空间中的属性
实例属性 存放在实例空间中属性

类方法 改变类属性的(默认就是类空间地址)
实例方法 改变实例属性
静态方法 谁也改变不了

实例对象可以调用类方法

03_property属性
定义的时候像函数一样 使用的时候像属性一样

作用: 简化 私有属性的修改 调用 的流程

 

其他资料:

https://www.cnblogs.com/tom-gao/p/6645859.html

 

转载于:https://www.cnblogs.com/snailon/p/8992803.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/54200.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息