KEY_WORD = "A"
def temp():
print KEY_WORD
KEY_WORD = "B"
这段代码运行会提示变量KEY_WORD在定义前使用。原因是因为一旦在函数中修改全局变量,则python会将全局变量认成局部变量,在函数的命名空间内寻找其定义。如果要修改全局变量,要在函数内使用global关键字进行声明。如下:
KEY_WORD = "A"
def temp():
global KEY_WORD
print KEY_WORD
KEY_WORD = "B"
当然,我个人更倾向将全局变量只作为常量。
$@在shell中表示所有参数,与$*不同的是,$@中的每个参数都相当于被双引号包含的独立字符串。
然而如果使用通配符传递文件名的时候,如果文件名中包含空格,$@会将包含空格的文件名理解成数个文件,这时只要使用引号将通配符引起再传递或者使用”$@”就可以了。
这两天做选修课实验,有一个项目要求在屏幕中英显示信息,在网上搜了一下,发现没有太好的解决方法,唯一比较精确的是利用控制字符:
例:
echo -ne "\33[20;40H"
#把光标移到20行40列
不过这样做有一个问题就是终端的行列数是不定的,没办法做到相对控制。今天在看Shell命令的时候发现了tput命令。tput -cols可以得到当前终端总列数,tput -lines可以得到总行数(不过奇怪的是man手册里没有lines这个参数,害得我开始还以为得不到行数),这样再结合echo就行了,如显示在屏幕右下角可以写成:
#!/bin/bash
lines=`tput lines`
cols=`tput cols`
echo -ne "\33[$lines;${cols}H"
近期评论