Python函数变量和返回值

时间:2022-06-14 15:15:06

Python函数的全局变量和局部变量

1、不同的编程语言,程序可以分为函数和过程两大类,函数具有具体返回值,而过程则不具有具体的返回值,python只具有函数,因为对于它的一般函数,其返回值为所具体返回的值,而类似于过程的实现函数返回值默认为None。

2、函数的变量具有不同的作用域,根据不同的作用域可以分为全局变量和局部变量,在python编程过程中一般不到万不得已不适用全局变量,因为它具有以下特点:

 1) 代码可读性变差
    2) 代码安全性降低

以下是关于全局变量的评价总结
    a) 它会造成不必要的常量频繁使用,特别当这个常量没有用宏定义“正名”时,代码阅读起来将万分吃力。
   
    b) 它会导致软件分层的不合理,全局变量相当于一条快捷通道,它容易使程序员模糊了“设备层”和“应用层”之间的边界。写出来的底层程序容易自作多情地关注起上层的应用。这在软件系统的构建初期的确效率很高,功能调试进度一日千里,但到了后期往往bug一堆,处处“补丁”,雷区遍布。说是度日如年举步维艰也不为过。

c) 由于软件的分层不合理,到了后期维护,哪怕仅是增加修改删除小功能,往往要从上到下掘地三尺地修改,涉及大多数模块,而原有的代码注释却忘了更新修改,这个时候,交给后来维护者的系统会越来越像一个“泥潭”,注释的唯一作用只是使泥潭上方再加一些迷烟瘴气。

d) 全局变量大量使用,少不了有些变量流连忘返于中断与主回圈程序之间。这个时候如果处理不当,系统的bug就是随机出现的,无规律的,这时候初步显示出病入膏肓的特征来了,没有大牛来力挽狂澜,注定慢性死亡。

e) 无需多言,如果您的系统中大量使用全局变量,那么您已经成功得到一个畸形的系统,它处于一个神秘的稳定状态!你看着这台机器,机器也看着你,相对无言,心中发毛。你不确定它什么时候会崩溃,也不晓得下一次投诉什么时候道理。

3、关于具体的实例:

函数实现功能:统计出任何一句所输入字符串里所拥有的字母、数字、空格及其其他字符的数目

两种方法:

第一:

def count(x):
  a="1234567890"
  b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
  c=" "
  x1=x2=x3=0
  i1=i2=i3=0
  L=len(x)
  while x1<=L-1:
    if x[x1] in a:
      i1+=1
    else:
      i1=i1
    x1+=1
  while x2<=L-1:
    if x[x2] in b:
      i2+=1
    else:
      i2=i2
    x2+=1
  while x3<=L-1:
    if x[x3] in c:
      i3+=1
    else:
      i3=i3
    x3+=1
   i4=L-i1-i2-i3
  print("该字符串共有数字:",i1,"个,字母:",i2,"个,空格:",i3,"个,其他字符:",i4,"个")
t=input("请输入一串字符串:")
count(t)

第二:

def count(*param):

  length = len(param)

  for i in range(length):

  letters = 0

  space = 0

  digit = 0

  others = 0

  for each in param[i]:

   if each.isalpha():

  letters += 1

  elif each.isdigit():

  digit += 1

  elif each == ' ':

  space += 1

  else:

  others += 1

  print('第 %d 个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (i+1, letters, digit, space, others))

t=input("请输入一串字符串:")
count(t)

4、Python的return语句可以返回多个不同类型的值:  默认用逗号隔开,是以元祖的形式返回,你当然也可以用列表包含起来返回

例如以下:

  >>> def myFun():

    return '知识点', 520, 3.14, True

  >>>  myFun()

   ('知识点', 520, 3.14, True)