函数的变量和返回值

一、函数的变量
1.函数变量分为局部变量和全局变量
局部变量:在Python中的任何变量都有特定的作用域,在函数中定义的变量一般只能在该函数内部使用,这些只能在程序的特定部分使用的变量我们称之为局部变量
全局变量:在一个文件顶部定义的变量可以供文件中的任何函数调用,这些可以为整个程序所使用的变量称为全局变量。
2.看个例子,来了解一下局部变量和全局变量
(1)
def fun():
x = 100
print x
fun()
print x

.

说明:x 在函数内部,他就是一个内部变量,只在函数内部生效,当结束了函数,x变量就无效了。作用域在函数内部。
(2)
x = 'global var'
def fun():
print x
fun()
print x


说明:全局变量定义在文件顶部,即使函数内部也可以使用全局变量。但是不能对他进行修改。
(3)
x = 100
def fun():
x+=1
print x
fun()

说明:这样写会报错,提示一个异常,局部变量X 参考之前定义的变量。不能修改全局变量。
如果要对全局变量进行修改,可以用global 来声明。
x = 100
def fun():
global x
x+=1
print x
fun()
print x

说明:global 声明局部变量x为全局变量,所以我们可以对全局变量x进行修改操作。并在全局生效。
(4)
x = 100
def fun():
global x
x+=1
global y
y = 1
fun()
print x
print y

说明:在函数内部定义了变量y 通过global声明后,外部也能打印出y的值,如果函数没有调用,函数内部定义的x和y 变量都不会生效。

2.locals()方法
locals() 函数会以字典类型返回当前位置的全部局部变量
x = 100
def fun():
x = 1
y = 1
print locals()
fun()

会打印出函数内部里的所有变量和对应的值,返回字典形式,这是在内部执行的locals。在外部也可以执行locals
x = 100
def fun():
x = 1
y = 1
print locals()
fun()
print locals()

下面的这个字典是,打印的是脚本执行的时候,有哪些变量执行。
二、函数的返回值。
1.在前面的练习当中,我们有写过很多的print,在真实情况下,一般都是使用return。
2.什么是函数返回值?
函数被调用后会返回一个指定的值。如果没有定义返回值得话默认会返回一个None。
用法是:return "返回值"
返回值可以是任意类型,字典 序列等等都可以。
当return执行后,函数终止。return后面的代码都不会再执行了。
3.看几个小例子
(1)
def fun():
print("hello world")
print fun()

可以看到print fun函数以后 还出现了一个None 这就是函数的返回值,因为我们没有定义返回值,默认就是返回None
def fun():
print("hello world")
return True
print fun()

结果还是出现2个。没有出现3个。这是因为函数在遇上了return后就会终止,结束了。后面的代码就不会再运行了。

(2)把上次写的判断数字脚本优化一下。
import sys
import os
def isNum(s):
for i in s:
if i not in '0123456789':
return Flase
return True
for i in os.listdir('/proc'):
if isNum(i):
print(i)

思路: 如果定义的S参数不是数字就返回一个False。如果是数字就返回return
然后对第二个的for循环做判断,如果返回的结果的真,那么就打印出来。
函数做返回值,就是利用这个返回值来做一些事情,比如可以做判断。
在把代码进行简化一下:
import sys
import os
def isNum(s):
if s.isdigit():
return True
return False
for i in os.listdir('/proc'):
if isNum(i):
print(i)

输出结果还是一样的。但是这样更简单了、
这里用到的一个字符串方法:isdigit()判断该字符串是否是数字,如果不是返回False.如果是就返回Trun。

练习:
1. 设计一个程序,从终端接收10个数字,并使用自己编写的排序函数,对10个数字排序后输出
list1 = []  #新建一个空列表
for i in range(1,11):   #输入10个数
    num = raw_input("Please input {0} number: ".format(i))  #提示输入10个数
    if num.isdigit():  //判断是否是数字
        list1.append(num)   //如果是数字就追加进列表
def sortNumber():      
    count = len(list1)   #定义长度
    for i in range(0,count):  #定义第一个数的循环范围,也是次数
        for j in range(i+1,count):  #取第二个数比较的范微,也是次数
            if int(list1[i]) > int(list1[j]): #判断第一个数是否比第二个数大
                list1[i],list1[j] = list1[j],list1[i]  #如果大于,就调换位置。重新赋值。
    return list1
print sortNumber()


2. 设计一个函数,接收一个英文单词,从文件中查询该单词的汉语意思并返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值