Python函数

Python函数

  • 1. 概念
  • 2. 语法
  • 3.无参函数
    • 1. 无返回值
    • 2. 有返回值
  • 4. 有参函数
    • 1. 无返回值
    • 2. 有返回值
    • 3. 形参和实参
    • 4. 位置参数
    • 5. 关键字参数
    • 6. 默认值参数
    • 7. 不定长参数
      • 1. 加一个*号 (元组 tuple)
      • 2. 加入两个**号 (字典 dict)
  • 5. 函数调用可以放在函数定义的前面吗?
  • 6. 练习题
    • 1. 利用函数打印四边形
    • 2. 有参,无参练习
    • 3. 求三个数的和平均值

1. 概念

函数: 把重复利用的代码块封装起来,多次利用起到少写代码,高效简洁的作用
内置函数: 比如 print()、len() 函数等,这些都是python为我们提供的内置函数,可以直接进行调用。
自定义函数:自己定义一段可重复使用代码的函数,简单理解就是自己创建的函数。

2. 语法

# 定义函数
def 函数名称([参数列表]):
		函数体
		[return]
		
# 调用函数
函数名称()
函数名:函数的名字,按照标识符命名规则命名
参数列表:小括号里面的参数,没有参数可以不写,有多个参数的时候中间用,(逗号)隔开
函数体:函数里要实现某个功能的代码
return 值:函数的返回值

注意:

  1. 用 [] (中括号) 括起来的可以使用,也可以省略不写
  2. 函数调用不可以放在函数定义的前面,因为再使用函数名调用函数时,要保证这个函数是已经存在的

3.无参函数

1. 无返回值

下面是定义的一个函数,a是自定义函数名,小括号中什么都不写(没有参数)
调用函数: 函数名()例如:a();

def a():
    print("Hello World!!!");

a(); # 函数的调用

2. 有返回值

例子:自定义一个函数,输入a和b,并计算两个数之和等于多少(运用到返回值)
因为要求运用到返回值,所以需要定义一个有返回值的函数,并在函数的最后写上return语句

def c():
    a = int(input("请输入a的值"));
    b = int(input("请输入b的值"));
    return a + b;

print(c()); 

4. 有参函数

1. 无返回值

def b(a,b): # a和b为形参
    print(a + b);

b(2,3); # 实参

注意:在调用函数时,要注意参数的传递顺序不能颠倒!

2. 有返回值

def d(a,b): # a和b为形参
    return a + b;

print(d(2,3)); # 2和3为实参

注意:在调用函数时,要注意参数的传递顺序不能颠倒!

3. 形参和实参

形式参数: 在定义函数求过程的时候命名的参数.告诉这里需要一个参数,你不传就用不了这个方法,定义函数的参数都是形参。

实参:实际参与运算,那么通过方法名使用这个方法的时候传的参数都是实参。

形参与实参的关系:两者是在调用的时候进行结合的,通常实参会将取值传递给形参,形参之后进行函数过程运算,然后可能将某些值经过参数或函数符号返回给调用者。

4. 位置参数

调用函数时传入实参的数量,位置和定义函数时的形参保持一致

def test(a,b,c,d) 
  return a + b + c + d;
 
print(test(1,2,3,4)); # 少传或者多传都会报错

5. 关键字参数

根据形式参数来确定输入的参数值,使用关键字参数允许函数调用时参数的顺序 位置与定义时不一致

def test(a,b,c,d) 
  return a + b + c + d;
 
print(test(1,d=4,c=3,b=2));

6. 默认值参数

def e(a,b,c=3):
    return a + b + c
    
print(e(2,3))
# 当定义一个有默认值参数的函数时,有默认值的形参必须位于所有没默认值形参的后面

7. 不定长参数

不定长参数传入的参数比声明函数时的参数多

1. 加一个*号 (元组 tuple)

加了星号 * 的参数会合并为元组(tuple)的形式,存放传入多的参数

def fun(a, *tupleb):
    print("a =",a)
    print("*tupleb = ",tupleb)

fun(3,4,5,6) # 调用fun函数

输出结果如下:

Python函数_第1张图片

2. 加入两个**号 (字典 dict)

字典形式

def fun(a, **dictb):
    print("a =",a)
    print("**dictb",dictb)

fun(1 ,b=1 ,c=2 ,d=3)

输出结果如下:
在这里插入图片描述

5. 函数调用可以放在函数定义的前面吗?

答案是不可以的,代码从上往下执行,我们必须保证调用时,函数已经存在,否则就会报错误

d(3,5);   # 调用
def d(a , b):   
    print("a+b的值为:",a+b)

运行结果如下所示:

未定义

在这里插入图片描述

6. 练习题

1. 利用函数打印四边形

任意输入两个数字,只让第一行和最后一行,第一列和最后一列输出 *,其它的都输出 -

def a(a,b):
    for i in range(a):
        for j in range(b):
            if i == 0 or i == a - 1 or j == 0 or j == b - 1:
                print('*',end='')
            else:
                print('-',end='')
        print()
        
a(6,6)

输出结果如下:
Python函数_第2张图片

2. 有参,无参练习

  1. 定义一个函数能够打印Hello World
def fun():
    print('Hello World')
fun()
  1. 定义一个函数能够打印任意字符
def fun(char):
    print(char)
fun('Hi')
  1. 定义一个函数能够打印任意字符,并且可以重复任意次数
def fun(char,num):
    print(char * num)
fun('H',5)
  1. 定义一个函数能够打印5行线,并且可以打印任意字符,也可以重复打印任意次数
def fun(char,num):
    for i in range(1,6):
        print(char * num)
fun('r',6)
  1. 定义一个函数能够打印n行,可以为任意字符,可以重复任意次数
def fun(char,num,n):
    '''这是函数文档注释'''
    for i in range(1,n + 1):
        print(char * num)
fun('p',10,6)

3. 求三个数的和平均值

# 1. 求和
def sum(a,b,c):
    return a+b+c 

# 2.求平均值
def avg(a,b,c):
    s = sum(a,b,c)
    avg2 = s/3
    return avg2

### 3.调用函数
x = avg(10,20,35)
print('平均值%0.3lf'%x)

你可能感兴趣的:(Python,python,函数)