首页 > 编程语言 >python随笔day03

python随笔day03

时间:2024-07-07 23:30:07浏览次数:22  
标签:__ name python day03 file print path 随笔 def

python面试基础问题

  1. lambda表达式
    基本语法:
变量 = lambda [参数列表]:表达式(函数代码+返回值)
#调用
变量()
例子如下:
#加法求和函数
a = lambda a, b : a+b
print(a(1,2))#3

#args元组类型
b = lambda *args : args
print(b('a','b','c','d',10))#('a', 'b', 'c', 'd', 10)

#**kw
c = lambda **kwargs : kwargs
print(c(name = '张三',age = 29))#{'name': '张三', 'age': 29}

2.局部函数

在函数里面定义的函数就是局部函数。

#局部函数,解决遮蔽问题用nonlocal修饰
def test():
    str = "hello"
    def test01():
        str = "world"
        print(str)
    test01()


test()#world  

# 修饰后
def test02():
    str = "hello"
    def test03():
        nonlocal str#修饰局部变量,使得局部变量str指向外部的str变量
        print(str)
        str = "world"
        # print(str)
    test03()

test02()#hello

3.闭包

a.nonlocal主要是在嵌套函数中访问并修改外层函数(非全局)作用域的变量。

b.在函数嵌套的前提下,内部函数使用了外部函数的变量,并且外部函数返回了内部函数,我们把这个使用外部函数变量的内部函数称为闭包函数。

c.特点:

(1)闭包函数的特点是可以访问和修改其所在作用域中的变量,即使这些变量在函数外部已经不可见或作用域已经结束。

(2)闭包函数可以延长变量的生命周期,使得函数在定义时的上下文信息能够被保留下来,并在需要时被使用。

(3)这种特性使得闭包在某些情况下非常有用,比如在函数式编程、回调函数等场景中。

闭包示例:

def outer_function(x):  
    def inner_function(y):
        nonlocal x #修饰外部函数中的变量x
        x=10
        return x + y
    return inner_function

closure = outer_function(20 )
result = closure(9)  # 这里的闭包函数引用了外部函数中的变量x
print(result)  # 输出:19

4.求一个整数,他加上100后是一个完全平方数,再加上268又是一个完全平方数?

#判断是否是完全平方数
def square(n):
    return (int(n**0.5)**2 == n)

def find_number():
    for i in range(10000):#可以修改范围
        if square(i+100) and square(i+100+268):
            return i
    return None

result = find_number()
if result is not None:
    print(f"满足条件的整数是: {result}")
else:
    print("没有找到满足条件的整数。")

5.下面程序会输出的结果是__main__

__name__ 是一个特殊变量,它代表当前模块的名字。在一个脚本中直接运行代码时,该脚本的 __name__ 值会被设置为 "__main__"

例1:

class Person:
    def __init__(self):
        pass
    def getAge(self):
        print (__name__)

p = Person()
p.getAge()#__main__

例2:

# 文件:person.py  
class Person:  
    def __init__(self):  
        pass  
    def getAge(self):  
        print(__name__)  
  
# 文件:main.py  
from person import Person  
  
p = Person()  
p.getAge()  # 这里将输出 "person",因为 person.py 的 __name__ 是 "person"

6.执行下面代码,不会报错异常的是?

#1
class Rect:
    def __init__(self, width, height):
        self.width = width
        self.height = height
    @property
    def area(self):
        return self.width * self.height
  
rect = Rect(5, 10)
print(rect.area) # 50

#2
a =0 
def fun():
    a+=1
    print(a)
fun() 
#异常UnboundLocalError: cannot access local variable 'a' where it is not associated with a value
#3
class A:
    def __init__(self,color = "red"):
        A.color = color
    def printColor(self):
        print(A.color)

class B(A):
    def __init__(self):
        pass

b = B()
b.printColor() #异常type object 'A' has no attribute 'color'
#4
class D:
    def __init__(self,color="red"):
        self.__color = color

d = D()
print(d.__color) #'D' object has no attribute '__color'. Did you mean: '_D__color'?

7.文件的备份功能

需要导入模块os

编号 函数 功能
1 os.mkdir(新文件夹名称) 创建一个指定名称的文件夹
2 os.getcwd() current work directory,获取当前目录名称
3 os.chdir(切换后目录名称) change directory,切换目录
4 os.listdir(目标目录) 获取指定目录下的文件信息,返回列表
5 os.rmdir(目标目录) 用于删除一个指定名称的"空"文件夹
6 os.path.basename(file_path) 拆分路径获得文件名
7 os.path.dirname(file_path) 拆分路径获得文件目录
#文件备份功能
import os
import shutil

# 备份文件
def backup_file(file_path): 
    # 获取文件名
    file_name = os.path.basename(file_path)
    print('正在备份文件:', file_name)
    # 获取文件目录
    file_dir = os.path.dirname(file_path)
    print('文件目录:', file_dir)
    #获取文件后缀名
    index = file_name.rfind('.')
    first_name = file_name[:index]
    last_name = file_name[index:]
    # 备份文件名
    backup_file_name = first_name + '[备份]'+ last_name
    # 备份文件路径
    backup_file_path = os.path.join(file_dir, backup_file_name)
    # 备份文件
    shutil.copy(file_path, backup_file_path)
    print('文件已备份至:', backup_file_path)

# 主函数
if __name__ == '__main__':
    file_path = input('请输入要备份的文件路径:')# 输入要备份的文件路径
    if not os.path.exists(file_path):
        print('文件不存在!')
        exit()
    else:
        backup_file(file_path)

8.面向过程和面向对象的区别?

① 都可以实现代码重用和模块化编程,面向对象的模块化更深,数据也更封闭和安全;

② 面向对象的思维方式更加贴近现实生活,更容易解决大型的复杂的业务逻辑;

③ 从前期开发的角度来看,面向对象比面向过程要更复杂,但是从维护和扩展的角度来看,面向对象要远比面向过程简单;

④ 面向过程的代码执行效率比面向对象高。

9.那些意想不到的结果(小菜)

a = range(100)
print(a[-3])#97
print(a[2-3])#99
print(a[::3])#range(0, 100, 3)
print(a[2:13])#range(2, 13)

10.字符串index()方法

字符串(String)的 index()方法用于查找子字符串(子串)在主字符串中首次出现的位置(索引)。如果找到了子字符串,则该方法返回子字符串第一次出现的索引;如果没有找到,则抛出一个 ValueError异常。

str1 = "hello world"
str2 = "world"
print(str1.index(str2))#6 找到返回索引值,没找到会报错

标签:__,name,python,day03,file,print,path,随笔,def
From: https://www.cnblogs.com/zlik8991/p/18287964

相关文章

  • Python网络爬虫:Scrapy框架的全面解析
    Python网络爬虫:Scrapy框架的全面解析一、引言        在当今互联网的时代,数据是最重要的资源之一。为了获取这些数据,我们经常需要编写网络爬虫来从各种网站上抓取信息。Python作为一种强大的编程语言,拥有许多用于网络爬虫的工具和库。其中,Scrapy是一个功能强大且灵......
  • CentOS版Linux安装python
    在CentOS系统上安装Python3.8可以通过以下步骤完成:首先,打开终端。下载Python3.8的源代码:wget  https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz解压下载的源码包:cd到Python-3.8.0.tgz的目录tarxzvfPython-3.8.0.tgz安装必要的构建工具和依赖项:sudoyu......
  • 【Playwright+Python】系列教程(四)Pytest 插件在Playwright中的使用
    一、命令行使用详解使用Pytest插件在Playwright中来编写端到端的测试。1、命令行执行测试pytest--browserwebkit--headed2、使用pytest.ini文件配置内容如下:[pytest]#RunfirefoxwithUIaddopts=--headed--browserfirefox效果:运行测试类,可以直接可以按照......
  • python 版本对比图片
    importcv2importnumpyasnpimportosdefcalculate_black_pixels_in_sectors(image,sector):#将图像转换为二值图像_,image=cv2.threshold(image,127,255,cv2.THRESH_BINARY_INV)#获取图像尺寸height,width=image.shape#计......
  • 数学建模——层次分析法 AHP(Python代码)
    层次分析法    层次分析法是由美国运筹学家、匹兹堡大学教授T.L.Saaty于20世纪70年代创立的一种系统分析与决策的综合评价方法,是在充分研究了人类思维过程的基础上提出来的,它较合理地解决了定性问题定量化的处理过程。    AHP的主要特点是通过建立递阶层次结......
  • 数学建模——Topsis法(Python代码)
    Topsis法    Topsis法是一种常用的综合评价方法,能充分利用原始数据的信息,其结果能精确反映各评价方案之间的差距。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。    基本过程为先将原始数据矩阵统一指标类型(一般正向化处理)得到正向化的矩阵,再对......
  • python 调用 bat,传入参数,bat中实现如果有参数传入则读取参数,没有的话就使用内部的变量
    以下是一个Python调用BAT脚本并向其传递参数的示例,同时BAT脚本中会判断是否有参数传入并进行相应处理:Python代码:pythonimportsubprocess#定义要传递的参数parameter="example_parameter"#调用BAT脚本并传递参数subprocess.run(["your_bat_script.b......
  • Python极简美学:用一行代码完成的26个日常任务!
    Python以其简洁优雅著称,能够用最少的代码行数实现强大的功能。本文特别为Python初学者设计,旨在展示Python如何以一行代码解决常见的编程任务,让你体验Python的极简美学。通过这些实例,你不仅能够学习到Python的基础知识,还能掌握一些高效编码的小技巧。1.计算列表平均值number......
  • Python和MATLAB微机电健康推导算法和系统模拟优化设计
    ......
  • 基于Python实现的博客内容推荐系统
    前言大家好!今天来给大家分享一个基于Python实现的博客内容推荐系统。这个项目源自于一个想法:如何为博客用户提供他们最感兴趣的内容。正如大家所知道的,内容推荐系统在电商、视频平台和社交媒体中应用广泛,能显著提升用户体验和平台粘性。那么,如何为我们的博客(比如你自己的W......