Python的函数#

本讲大纲#

  • 定义函数

  • 调用函数

  • 常见内置函数

定义函数#

def#

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()

  • 函数内容以’ : ‘起始,并且缩进

  • 可以不带参数,可以多个参数

return#

  • return有结束函数的作用

  • 有return [表达式](如下列例子中的 return result) 才可以返回函数执行结果。

  • 不带表达式的return相当于返回 None。

  • 可以同时以元组的方式返回多个值

# 例1.有return有表达式的函数
def power(n):
    """
    n!
    """
    result = 1
    for i in range(1,n+1):
        result *= i
    if result>0:
        return result
    else:
        print(result)


power(10)
3628800
# 例2.有return无表达式的函数
def power(n):
    result = 1
    for i in range(1,n+1):
        result *= i

power(10)
# 例3.没有return的函数
def sqrt(s):
    print(s)
    pass
    print(s+1)

sqrt(4)
4
5

练习1#

定义函数my_sum,当a>5时,计算a+b2,当a<3时,计算a+b4,其他情况计算a+b*3

def f(a,b):

    a = float(a)
    b = float(b)    
        
    if a>5:
        return a + b*2
    elif a<3:
        return a + b*4
    else:
        return a + b*3

    
f('1.1', '1.2')
5.9

调用函数#

  • 调用先前定义的三个函数,观察结果

power(10)
sum(10)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[6], line 1
----> 1 sum(10)

TypeError: 'int' object is not iterable
sqrt(4)

return和print都可以返回值,但只有return才可以保留结果

对比下列两个函数的语句及结果

def odd(x):
   if x%2 != 0:
        return x
   else:
        return 0

odd(3)+odd(4)
def odd(x):
   if x%2 != 0:
        print(x)
   else:
        print(0)
        
odd(3) + odd(4)
None + None

常见内置函数#

# len()函数
len([1,3,4,5,7])
# sum()函数
sum([1,3,4,5,7])
sum((1,3,4,5,7))
# abs()函数   求绝对值
abs(-1)
# int()函数   向下取整
int(5.7)
# str()函数   将对象转化为字符串
str(5+3)
# print()函数   打印
print('Hello, world')
# input()函数   接受键盘输入,返回输入对象
a=input('请输入一个整数')
print(a)
# round(a,b)  对a进行四舍五入,保留b位小数 (该方法不可靠,不推荐使用)
round(10.3)
a = input("请输入一个Python语句")
eval(a)    #计算字符串中表达的值并返回

友情链接#

  • 关于Python函数的深入用法,请参见”Python函数和函数式编程”一章。

  • 关于函数式编程的详细内容,请参见”Python函数和函数式编程”一章。

本讲作业#

1.请定义一个函数,输出‘开始做作业’

2.请定义一个函数,接收两个参数,返回较大的数字

3.请定义一个函数,接受一个由数字组成的列表,返回该列表的平均值

3.请定义一个函数,判断一个数是否为素数,然后调用该函数输出100以内的素数

def avg(numbers):
    return sum(numbers)/len(numbers)

avg([1,3,5,6,9])
def is_not_prime(n):
    for i in range(2, n+1):
        _is_prime = 1
        for j in range(2, i):
            if (i % j == 0):
                _is_prime = 0
                break
        if not _is_prime:
            print(i)        
        
is_not_prime(100)