函数的作用

Python第四阶段

函数的返回值

洗衣服的过程

返回值

函数不是直接显示输出的,它会处理一些数据并返回一个或一组值

什么是函数的返回值

a = input()

变量a就是input()函数的返回值,也就是input函数运行的结果

如何使用函数的返回值

def Sum(a,b):
  #将a和b参数进行相加,并将结果返回到调用程序的地方
  return a + b
  
  
#将计算结果保存在c变量中进行使用  
c = Sum(4,5)
print(c)

如何使用函数的返回值

def name(first_name,last_name):
    full_name=first_name+" "+last_name
    return full_name
print(name("zhang","san"))

#运行结果:
#zhang san

如何使用函数的返回值

请设计一个绝对值absolute( )函数,如果输入-5返回5,如果输入5返回5

函数返回值的类型

函数返回值的类型

字典类型

还是上面的例子,返回一个表示人的字典:

def name(first_name,last_name,):
    full_name={"first":first_name,"last":last_name}
    return full_name
print(name("zhangsan","lisi"))

#运行结果为:
#{'first': 'zhangsan', 'last': 'lisi'}

函数返回值的类型

列表类型

函数传递列表,传递列表在函数中很有用,在列表中包含数字、名字甚至更复杂的对象,下面举一个例子:

def f(names):
    for i in names:
        print("Hello"+" "+i+"!!")
f(["zhangsan","lisi","wangwu"])

#运行结果:
#Hello zhangsan!!
#Hello lisi!!
#Hello wangwu!!

函数返回值的类型

None类型

如果在所设计的函数中,没有return[返回值],那么Python在编译时会自动返回处理成return None,相当于返回了一个None

def greeting(name):
    print("Hi",name,"Good Morning")

ret_value = greeting("Nelson")
print("greeting()返回值",ret_value)
print(ret_value,'的类型:',type(ret_value))

返回多个数据的应用

使用return返回函数数据时,也允许返回多个数据,各个数据用逗号进行分开即可

def mutifunction(x1,x2):
  addresult = x1 + x2
  subresult = x1 - x2
  mulresult = x1 * x2
  divresult = x1 / x2
  return addresult,subresult,mulresult,divresult

#利用同时赋值进行接收
a,b,c,d = mutifunction(2,3)

#利用单个变量进行接收
e = mutifunction(2,3)

print(a)
print(e)

如何使用函数的返回值

请扩展一下该案例,新添加一个参数,该参数用于控制是做加法、减法、乘法和除法运算

如何使用函数的返回值

请扩展一个该案例,让它可以重复执行,直到输入运算是q时,程序才执行结束

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

对于变量来说,我们需要去区分清楚变量的作用域,作用域指的是这个变量能够使用的范围有多大

根据变量不同的作用域(作用范围),将变量分成两种类型局部变量全局变量

  • 局部变量:在子程序中定义的变量称为局部变量
  • 全局变量:全局变量指的是在整个程序中,都能够被使用的变量,在程序的任何位置都能够访问并使用这个全局变量
  • 局部变量:在子程序中定义的变量称为局部变量
#words是一个全局变量
words = 'hello,world'
def f():
  #w是一个局部变量
  words = "hello"
  print(words)

f()

#运行结果:
#hello
  • 局部变量:全局变量指的是在整个程序中,都能够被使用的变量,在程序的任何位置都能够访问并使用这个全局变量
#words是一个全局变量
words = 'hello,world'
def f():
  #w是一个局部变量
  w = "hello"
  print(w)

f()
print(words)

当程序运行时,首先会找程序内部有没有局部变量,如果有,则调用,如果没有,才会去调用全局变量

#words是一个全局变量
words = 'hello,world'
def f():
  #w是一个局部变量
  w = "hello"
  print(w)#words是一个全局变量
words = 'hello,world'
def f():
  #w是一个局部变量
  words = "hello"
  print(words)

f()

#运行结果:
#hello

f()
print(words)

当程序运行时,首先会找程序内部有没有局部变量,如果有,则调用,如果没有,才会去调用全局变量

#words是一个全局变量
words = 'hello,world'
def f():
  #w是一个局部变量
  print(words)

f()

#运行结果:
#hello,world

判断下面程序的输出结果

#words是一个全局变量
words = 'hello,world'
def f():
  print(words)

def a():
    words = 'world'
    print(words)
    
a()
f()

global关键字

如果在函数当中,直接对全局变量进行赋值,则相当于是新建了一个同名的局部变量,是不能正常进行修改的,如果在函数当中,想要对全局变量的内容进行修改,则需要使用global关键字

word = "hello,world"

def f():
    #声明,要使用的是全局变量word,而不是新建一个局部变量
    global word
    word = "hello"

f()
print(word)

综合练习

写出一个函数,判断两个字符串是否可以通过改变字母的顺序,变成一样的字符串。

答案

def anagram(s,t):
    set_s = [0] * 256
    set_t = [0] * 256

    for i in range(len(s)):
        set_s[ord(s[i])] += 1
    for i in range(len(t)):
        set_t[ord(t[i])] += 1
    for i in range(256):
        if set_s[i] != set_t[i]:
            return False
    return True

s = 'abcd'
t = 'dcba'

print(anagram(s,t))

编写一个函数,参数是给定一个正整数,输出它的补数。补数是将原数字的二进制形式按位取反,再转回十进制后得到的新数

答案

def number(n):
    result = ""
    temp = bin(n)[2:]
    for i in range(len(temp)):
        if temp[i] == '1':
            result += '0'
        else:
            result += '1'
    return int(result,2)

print(number(5))

绘制一个满天星图

 

  • 五角星的大小不同
  • 五角星的位置是随机的
  • 五角星的填充颜色是随机的
  • 背景颜色为黑色

函数的作用

By yang he

函数的作用

  • 151