Python相关知识点

1. lambda 表达式(又称匿名函数)

作用:
    创建一个匿名函数对象
    用def 类似,但不提供函数名
   语法格式:

lamdba [形参1,形参2,…]:表达式
   例:
def myadd(a,b):
return a + b
|| #等同于
myadd = lamdba a, b: a + b # 表达式

print('10 + 20 =',myadd(10,20))
print('30 + 40 =',myadd(30,40)) 

说明:

1.lambda 只是一个表达式,它用来创建一个函数对象
    2.当lambda表达式调用时,先执行冒号(😃
后的表达式,并返回表达式的结果的引用
3.lambda 表达式创建的函数只能包含一条表达式
4.lambda比函数简单且可以随时创建和销毁,有利于减少程序的偶合度

2.函数式编程

是指用一系列函数解决问题

函数是一等公民(Guido)
1.函数本身可以赋值给变量,赋值后变量绑定函数
2.允许将函数本身作为参数传入另一个函数
3.允许函数返回一个函数

3.递归函数 recursion

函数直接或间接的调用自身

例:
 def f():
f() #直接调用自己,进入递归
f()

#函数间接调用自身
def fa():
    fb()
def fb():
    fa()
fa()
print("递归完成")

说明:
  递归一定要控制递归的层数,当符合一定条件时要终止递归
  调用
  几乎所有的递归都能用while循环来代替

优点:
  递归可以把问题简单化,让思路更为清晰,代码更简洁
缺点:
  递归因系统环境影响大,当递归深度太大时,可能会得到不
  可预知的结果

递归的两个阶段:
    递推阶段: 从原问题出发,按递归公式递推从未知到已知,
              最终达到递归的终止条件
    回归阶段: 按递归终止条件求除结果,逆向逐步代入递归公式
              ,回归到问题求解

例:
def fn(n):
print(‘递归进入第’,n,‘层’)
if n == 3: #当递归进入第三层时,将不再向下走,开始回归
return
fn(n+1)
print(‘递归退出第’,n,‘层’)

fn(1)
print(‘程序结束’)

列:
def myfac(n):
if n == 1:
return 1
return n * myfac(n-1)
print(‘5的阶乘是:’,myfac(5))

4.闭包 closure

闭包是指引用了此函数外部嵌套函数作用域变量的函数

闭包必须满足三个条件:
   1.必须有内嵌函数
   2.内嵌函数必须引用外部函数中的变量
   3.外部函数返回值必须是内嵌函数.

例子:
  def make_power(y):
def fn(x):
return x ** y
return fn

pow2 = make_power(2)
print(‘5的平方是:’,pow2(5))
pow3 = make_power(3)
print(‘6的立方是:’,pow3(6))

5.装饰器 decorators

什么是装饰器
    装饰器是一个函数,主要作用是用来包装另一个函数或类(后面会讲)
作用:
  是在不改变原函数名(或类名)的情况下改变被包装对象的行为

函数装饰器:
     函数装饰器是指装饰器是一个函数,传入的是一个函数,返回的也是一个函数

语法:
  def  装饰器函数名(参数):
       语句块
       return 函数对象

@装饰器函数名<换行>
def 函数名(形参列表):
    语句块

例:

def mydeco(fn):
def fx():
print(‘fx函数被调用’)
return fx
# myfunc加了mydeco装饰器,等同于在myfunc创建之后调用
# myfunc = mydeco(myfunc)
    @mydeco
def myfunc():
print(‘函数myfunc被调用’)

#myfunc = mydeco(myfnc) #这样的写法可以用装饰器来代替
myfunc() #这里调用谁?

def mydeco(fn):
def fx():
print(‘+++++++++这是myfunc调用之前’)
fn()
print(‘---------这是myfunc调用之后’)
return fx
@mydeco
def myfunc():
print(‘函数myfunc被调用’)
myfunc()

python相关问题

1、 python2中乱码如何解决(这个是python2的问题)

	答:通过使用UNICODE字符集可以满足跨语言文字处理,避免乱码的产生。

2、 python的垃圾回收机制是什么,引用计数。

	答:在引用计数基础上,还可以通过“标记-清除”解决容器对象可能产生的循环引用的问题,也可以用“分代回收”以空间换取事件
	来进一步提高垃圾回收的效率。

3、函数作用域

	答: * 如果一个变量在def内赋值,则被定位在这个函数内
		 * 如果一个变量在一个嵌套函数的def中赋值,对于嵌套函数来说,它非本地的
		 * 如果一个变量在def外赋值,它就是整个文件

4、常用的python模块有哪些?

	答:
		* time(时间)
		* random(随机数)
		* os模块(提供对操作系统进行调用的接口)
		* json模块(用于字符串和python数据类型间进行转换)

5、常用的Linux命令有哪些

	答:
		* cd(进入一个目录下)
		* pwd(显示工作路径)
		* ls(查找文件)
		* tree(显示文件和目录由根目录开始的树形结构)
		* mkdir(创建文件夹)
		* rm(删除)
		* mv(重命名/移动一个目录)
		* cp(复制一个文件)
		* touch(修改一个文件或目录的时间戳)
		* find(文件搜索)
		* tar,zip(打包,解压)
		* chomd(设置权限)

6、函数里一个*和两个**是什么意思?

	答:
	 	  一个*表示计算,两个**表示参数传递过程中元素的打包和解包。

7、线程和进程的问题,全局解释器锁。

	答:
		* 线程:是程序执行流的最小单元,是系统独立调度和分配CPU(独立运行)的基本单位。
		* 进程:是资源分配的基本单位,一个进程包括多个线程。
		* 多线程:同一时刻执行多个线程。
		* 多进程:同时执行多个程序。
		* GIL锁,全局解释器,作用就是限制多线程同时执行,保证同一时间内只有一个线程在执行。

8、python支不支持char类型

	答:不支持

9、列表的常用函数

	答:
		* List.append(添加元素)
		* List.insert(插入一个元素)
		* List.remove()(删除元素)
		* List.pop()(弹出某个元素)
		* List.reverse()反转
		* List.sort()排序

10、字典的常用函数

	答:
		* dict()创建空字典
		* keys()字典的键为不可变的类型
		* vlaues()字典的值可以为任意类型,任意值。

11、python里的数据类型

	答:
		* Number(数字)
		* String(字符串)
		* List(列表)
		* Dict(字典)
		* Tuple(元祖)
		* Set(集合)
		* 不可变数据:Number、String、Tuple
		* 可变数据:List、Dict、Set

12、字典和列表的区别,列表和元组的区别。

	答:
		* 列表是任意对象的有序集合,列表是一组任意类型的值,按照一定顺序组合而成的。
		* 字典是任意对象的无序集合,字典中没有特定顺序,以“键”为象征。
		* 列表是动态数组,可以改变内部元素的个数
		* 元组是静态数组,内部元素一旦创建便无法改变

13、什么是lambda表达式,作用。

	答:
		* lambda只是一个表达式(又称匿名函数),用来创建一个函数对象
		* 作用可以随时创建和销毁,有利于减少程序的耦合度

14、pass语句的作用是什么?

	答:pass语句,又称空语句,填充语法空白

15、python中如何拷贝一个对象

	答:赋值、浅拷贝、深拷贝。

16、python中如何生成一个随机数?返回数据时什么类型?

	答:random函数,返回浮点数。

17、python中"is" 和 "==" 的区别?

	答:"is"比较的是id,"=="比较的是vlaue值

18、python的函数重载主要解决什么问题?

	答:
		* 可变参数类型
		* 可变参数个数

19、cookie和session的区别?

	答:
		* cookie数据保存在客户浏览器上,cookie不是很安全
		* session数据放在服务器上,session会在一定时间内保存在服务器上。

20、当一个类继承多个类时,集成的顺序时什么样的?

	答: 自下而上的

21、判断一个文件是否存在,怎么判断一个文件是文件还是普通文件。

	答:os模块中的os.path.exists()方法用于检验文件是否存在。

22、对python的理解

	答:
		* python是一种解释性语音
		* python是动态语言,在创建新的变量时,不用去指定变量的类型
		* python是面向对象的语言
在 Python 中生成一个随机字母

这篇文章将讨论如何在 Python 中生成随机字母。

在里面 以前的帖子,我们已经讨论了如何在 Python 中生成随机数。这篇文章概述了在 Python 中生成随机字母的几个函数。

1.使用 random.choice() 功能
这 random.choice() 函数用于从指定的序列中选择一个随机项。这个想法是使用 ascii_letters 从常数 string 模块,它返回一个包含范围的字符串 A-Za-z,即小写和大写字母。

import string, random

if name == ‘main’:

rand = random.choice(string.ascii_letters)
print(rand)

2.使用 secrets.choice() 功能
如果您需要生成加密安全的随机字母,请考虑使用 choice() 从函数 secrets 模块。

import string, secrets

if name == ‘main’:

rand = secrets.choice(string.ascii_letters)
print(rand)

3.使用 random.randint() 功能
这 random.randint(x, y) 函数生成随机整数 n 这样 x <= n <= y.如果您需要生成一个随机字母,您可以这样做:

import random

在 x - y 范围内生成一个随机字母

def randletter(x, y):
return chr(random.randint(ord(x), ord(y)))

if name == ‘main’:

# 在 `a-z` 范围内生成一个随机字母
r = randletter('a', 'z')

# 在`A-Z`范围内生成一个随机字母
R = randletter('A', 'Z')

#随机选择字母`r`或`R`
rand = (r, R)[random.randint(0, 1)]
print(rand)




# 导入模块

import random
import string

声明字符串长度

string_length = 10

仅生成大写

letters =string.ascii_uppercase
print(‘’.join(random.choice(letters) for i in range(string_length)))

生成大写和数字

letters_digits =string.ascii_uppercase+string.digits
print(‘’.join(random.choice(letters_digits) for i in range(string_length)))

安装第三方库 出现Read timed out的错误

如何解决这种问题,只要在安装第三方库的时候添加时间元素就行了(pip --default-timeout=100 install -U 第三方库名)

获取范围在1-100的随机数字

num = random.randint(1, 100)

num = 8

定义一个变量,记录总共猜测了多少次

count = 0

通过一个布尔类型的变量,做循环是否继续的标记

flag = True
while flag:
guess_num = int(input(“请输入你猜测的数字:”))
count += 1
if guess_num == num:
print(“猜中了”)
# 设置为False就是终止循环的条件
flag = False
else:
if guess_num > num:
print(“你猜的大了”)
else:
print(“你猜的小了”)

print(f"你总共猜测了{count}次")

闭包是什么

答:闭包是指引用了此函外部嵌套函数作用域变量的函数。

实例:

def make_power(y):
def fn(x):
return x ** y
return fn
pow2 = make_power(2)
print(‘5的平方是:’, pow2(5))
pow3 = make_power(2)
print(‘6的平方是:’, pow3(6))

装饰器是什么,用在哪里?

答:装饰器是一个函数,作用是用来包装另一个函数或类

实例:

print(‘下一实例’)
def mydeoc(fn):
def fx():
print(‘myfunc调用之前’)
fn()
print(‘myfunc调用之后’)
return fx
@mydeoc
def myfunc():
print(‘myfunc函数被调用’)
myfunc()
print(‘下一实例’)

实现1到100的相加

实例:

def sum():
sum = 0
for i in range(1,101):
sum += i
return sum
print(sum())
print(‘下一实例’)

什么是迭代器

答:迭代器是访问可迭代对象的工具

# 迭代器是指用iter(obj)函数返回的对象
# 迭代器可以用next(it)函数获取可迭代对象的数据

实例:

L = [2,3,7,9]
it = iter(L)
print(next(it))
print(next(it))
print(next(it))
print(next(it))
print(‘下一实例’)

什么是生成器

生成器是能够动态提供数据的对象,生成器对象也是可迭代对象

gen = (i ** 2 for i in range(1,5))
it = iter(gen)
print(next(it))
print(next(it))
print(next(it))
print(next(it))
print(‘Str(字符)转换List(列表)’)

Str(字符)转换List(列表)

str1 = ‘12345’
print(str1)
list1 = list(str1)
print(list1)

str2 = “123 world frist”
print(str2)
list2 = str2.split()
print(list2)
print(‘List(列表)转换Str(字符)’)

List(列表)转换Str(字符)

list3 = [“www”,“goole”,“com”]
print(list3)
str3 = “”.join(list3)
print(str3)
str4 = “.”.join(list3)
print(str4)
print(‘List(列表)转换Dict(字典)’)
a = [‘a1’,‘a2’,‘a3’]
b = [‘b1’,‘b2’,‘b3’]
c = zip(a,b)
print(dict©)
print(‘Dict(字典)转换List(列表)’)
dict1 = {‘name’,‘孙悟空’,
‘age’,‘1000’}
list4 = list(dict1)
print(list4)
print(‘List(列表)转换Tuple(元组)’)
list5 = [1,2,3]
tup1 = tuple(list5)
print(tup1)

print(‘下一实例’)

什么是lambda表达式,作用。

lambda只是一个表达式(又称匿名函数),用来创建一个函数对象

作用可以随时创建和销毁,有利于减少程序的耦合度

实例:

Nick = lambda x,y : x + y
print(Nick(6,9))
print(‘下一实例’)

列表推导式的嵌套

p = [x + y for x in “ABC” for y in “123”]
print§
print(‘下一实例’)

冒泡排序的原理

比较相邻的元素,如果第一个比第二大,就交换他们,每一次只能将一个排序归位,如果有n个数排序,只需要将n-1个数归位。

实例:

def Numbers(nums):
for i in range(len(nums)-1):# 这是循环负责设置冒泡排序进行的次数
for j in range(len(nums)-i-1):# j为列表的下标
if nums[j] > nums[j + 1]:
nums[j],nums[j + 1] = nums[j + 1],nums[j]
return nums
nums = [5,2,45,6,98,16,81]
print(Numbers(nums))
print(‘下一实例’)

递归

def fn(n):
print(‘递归进入第’,n,‘层’)
if n == 5:
return
fn(n + 1)
print(‘递归退出第’,n,‘层’)
fn(1)
print(‘程序结束’)
print(‘下一实例’)

列表的排序方法

list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列

实例:

list5 = sorted([19,5,16,2,8,6])
print(list5)

list6 = [5,3,1,7,2]
list6.sort()
print(list6)
list6.reverse()# 反转
print(list6)

list7 = sorted({5:‘D’,3:‘B’,4:‘C’,2:‘A’,1:‘E’})
print(list7)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值