tencentma 发表于 2022-9-9 13:34

python代码求帮忙解读

本帖最后由 tencentma 于 2022-9-9 13:35 编辑

下方是一个菜鸟教程上的python代码,我不太明白,希望大神能帮忙把每一句解读一下,谢谢啊。比如第二句Lfirst = input[0 : d] ,input还能这么用?单独打印Lfirst为啥提示错误。感谢。


Python3 实例给定一个字符串,从头部或尾部截取指定数量的字符串,然后将其翻转拼接。
实例



def rotate(input,d):

    Lfirst = input
    Lsecond = input
    Rfirst = input
    Rsecond = input

    print( "头部切片翻转 : ", (Lsecond + Lfirst) )
    print( "尾部切片翻转 : ", (Rsecond + Rfirst) )

if __name__ == "__main__":
    input = 'Runoob'
    d=2# 截取两个字符
    rotate(input,d)
执行以上代码输出结果为:

头部切片翻转 :noobRu
尾部切片翻转 :obRuno

楼主你好萌 发表于 2022-9-9 13:43

这里的input是一个变量

tencentma 发表于 2022-9-9 13:52

楼主你好萌 发表于 2022-9-9 13:43
这里的input是一个变量

谢谢,一句话就说明白了,我懂了!想问下if __name__ == "__main__":这一句一般什么时候用啊,找了教材没看太懂。

luxingyu329 发表于 2022-9-9 13:56

# 这是定义一个名字为 rotate的函数需要传两个参数
def rotate(input, d):
    # 传进来的参数赋值给 Lfirst   
    # input 表示传进来的第一个参数从下标0开始切片,切到第2个参数也就是d的下标为止
    Lfirst = input
    # 同上 也就是把上面切片剩下的所有字符赋值给Lsecond
    Lsecond = input
    # 传进来的第一个参数从下标0开始切片至 (参数总长度减出第二个参数)的长度的下标 赋值给Rfirst
    Rfirst = input
    # 同上一行切片剩下的字符赋值给Rsecond
    Rsecond = input
    # 输出,接受赋值的变量输出就是结果了
    print("头部切片翻转 : ", (Lsecond + Lfirst))
    print("尾部切片翻转 : ", (Rsecond + Rfirst))
    '''
    本例中传入的第一个参数是 input 第二个参数是在d, 也就是传入'Runoob',2
    Lfirst 赋值结果为 Runoob 从0到2的下标 Ru
    Lfirst 赋值结果为 Runoob 从2到最后的下标 noob
    Rfirst 赋值结果为 Runoob 从0到(6-2)=4的下标 Runo
    Rsecond赋值结果为 Runoob 从(6-2)=4的下标至最后 ob
    '''


if __name__ == "__main__":
    # 定义变量
    input = 'Runoob'
    # 定义变量
    d = 2# 截取两个字符
    # 调用函数
    rotate(input, d)
# 执行以上代码输出结果为:
#
# 头部切片翻转 :noobRu
# 尾部切片翻转 :obRuno

lxfx1 发表于 2022-9-9 13:56

这里的input并不是让你输入值,而是传入函数的一个参数,你也可以把所有的input改成a/b之类,对结果没有影响。另外打印Lfirst需要放入定义的函数rotate里,比如放在print( "尾部......这句后面,如果你想在主函数中输出Lfirst的值,可以在定义的rotate(input,d)里加一句return Lfirst,然后输出rotate(input,d)就行。

luxingyu329 发表于 2022-9-9 13:58

if __name__ == "__main__":
涉及是本代码执行还是另一个模块调用, 这句是起来判断的作用,如果是本程序执行,那么这句下面执行的代码执行,
如果 是别的代码调用本代码的函数 ,那么if __name__ == "__main__":下面包含的代码不执行

amorous_pp 发表于 2022-9-9 14:00

if __name__ == "__main__":是做判断脚本是通过import 导入还是直接执行的,只有直接执行脚本的时候才会执行里面的语句。 一般是用于测试当前脚本是否工作正常的内容放在里面。然后防止在import的时候执行这些代码。
Lfirst是函数内的变量,变量有作用域, 在函数外是无法访问的。想要访问需要在函数内进行访问,作用域分为LEGB,这块可以百度学习。

oarewyo 发表于 2022-9-9 14:01

tencentma 发表于 2022-9-9 13:52
谢谢,一句话就说明白了,我懂了!想问下if __name__ == "__main__":这一句一般什么时候用啊,找了教材没 ...

main相当于主函数,使代码更有逻辑

Liliright 发表于 2022-9-9 14:17

本帖最后由 Liliright 于 2022-9-9 14:18 编辑

我也想知道

YuanFang0w0 发表于 2022-9-9 14:17

tencentma 发表于 2022-9-9 13:52
谢谢,一句话就说明白了,我懂了!想问下if __name__ == "__main__":这一句一般什么时候用啊,找了教材没 ...

比如有两个文件,test1.py,test2.py。
要分模块开发,测试。
如果完成了test1的功能,要在当前的test1中测试一下功能是否正常,那么这个时候有两种途径
第一:可以在test1中写if __name__ == "__main__":,在他下面写你要测试调用的方法功能。
第二:直接在test中调用你要测试的功能。
测试没问题之后,你要在test2中引入这个test1的功能,也就是import test1
然后你test2开发完成,要进行测试。
因为你在test2中import了test1,所以在test2测试的时候,如果你的test1是第二种写法,就会在test2中调用你测试test1的功能,可能造成方法多次调用,进行不必要的操作。但是第一种就不会。

总的来说,他就是一个判断入口的方法,如果你是在本文件中进行运行测试,那么当你运行时他就会执行main下面的内容,在别的文件中import调用,main下的内容不被执行。
页: [1] 2
查看完整版本: python代码求帮忙解读