Python趣事-1

本文介绍了Python编程中获取命令行参数的方法,包括使用`sys.argv`和`getopt`模块。此外,还探讨了一个不常见的用法——在for循环中的else语句,解释了它的执行条件和作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章系列简介

最近写博客,发现许多优秀的系列文章,那我就不禁对写博客这一行为进行的思考。

博客,每个人都写一样差不多,我觉得这样很没意思,况且写博客很花时间?花那么时间去跟别人写差不多的,甚至不如其他人?这样做真的值得吗?

所以我决定改变自己写博客的方式,写写那些自己平常不太关注的小知识点!

如果你一点python基础都没有的话,建议你先去看看基础python教程,如廖雪峰老师的python教程

Action,let’s do it!

python运行时如何获取命令后参数

相信在输入一些命令时候肯定输入过一些带参数的命令吧,如

mysql -uroot -p

u就是参数名称,root便是参数值。

那么自己写的python如何才能接收到这些参数呢?

sys.argv

#!/usr/bin/env python3
# filename: note1.py
# -*- coding: utf-8 -*-

__author__ = 'simfg'
import sys

if __name__ == '__main__':
    print(sys.argv)

1.sys.argv就是接受参数的所有变量,第一个变量永远是文件名

2.在命令后输入:

注意切换目录

python3 note1.py

python3 note1.py a b

这里写图片描述

getopt模块

主要方法是getopt,可用于获取键值对类型的参数

1.例如显示你想这样接收参数

python3 note.py -uroot -pabc

意义就是u、p为参数名称,root、abc分别为参数名称

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

__author__ = 'simfg'
import sys
import getopt

if __name__ == '__main__':
    # print(sys.argv)
    opt,args = getopt.getopt(sys.argv[1:],'u:p:')
    print(opt)
    print(args)

abc

link

getopt这个模块中的getopt方法,第一个参数是参数列表,注意去除第一个文件名参数

第二个参数是指期望接受的参数名,注意每个参数名后面需要加上冒号

第三个参数是可选参数,是接收一个列表,用于接收长参数 ,见下面例子

opt,args = getopt.getopt(sys.argv[1:],'u:p:',['link=','abc='])

lll

需要注意的就是,getopt这个方法返回一个tuple,包括了两个list,第一个list是接收键值对参数,第二个是接收剩余的参数

如果多个参数里面,匹配一个出错,那么在这个参数后面的值都会被列入第二个list,如果命令中参数没有匹配的值将会报错

lalks

在p参数后面有两个参数值,其中123被匹配,但是abc去找不到匹配值,那么后面的参数都会被列为第二个list中

ajksjkas

第一种短参数只能是一个字母,如果包含两个字母将无法进行识别,因为参数和参数值是写在一起,那么解析的时候就不知道你是想利用一个字母还是两个字母作为参数

有趣的else

一般来说 else语句一般是跟在if语句后面,如

if a > 0:
    pass
else 
    pass

来看看一个有趣的代码片段

for n in range(2, 10):
     for x in range(2, n):
         if n % x == 0:
             print(n, 'equals', x, '*', n//x)
             break
     else:
        print(n, 'is a prime number')

你是否怀疑这个代码片段是错误的呢?

NO,NO,NO,it’s right!

运行结果如下图:

akaka

首先你需要知道的是这个用法是正确的

这个else是属于谁的?从格式上来看,很明显这个是属于for的

来解释下上述代码片段,当执行完for循环下的片段,在执行else语句的片段,但是需要注意的是这个else是属于for循环里面的一部分,所以break后退出for循环,自然而然就不会执行else语句的代码片段


欢迎大家留言转载

关注微信公众号:SimFG,随时随地看博客要点
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值