Python函数详解与优化技巧

目录

1、函数定义

2、函数类型

(1)无参数无返回值函数 

(2)有参数无返回值函数

(3)无参数有返回值函数

(4)有参数有返回值函数

 3、函数的参数的类型

(1)参数位置

(2)默认值函数

(3)可变参数

(4)关键字参数

4、变量的作用域

(1)局部变量

(2)全局变量

5、实例 

例1:编写函数可以用来计算1-n的和

 例2:实现计算器各种功能: + – * /  **

 例3:计算图形面积,提前要实现登录功能。

1、函数定义

函数是组织好的,可以重复使用的,用来实现特定功能的代码块。类似:mysql中存储过程。

语法:

def   函数名称([函数参数])         #  中括号中内容是可选的

        函数体                                        #  注意代码缩进

说明:

  1. 函数名称属于标识符,要遵守python标识符命名规范;
  2. 函数定义时候,可以有参数,也可以没有参数,根据需求来定;
  3. 函数的内容就是函数体,代码一定要缩进。

2、函数类型

以计算器功能为例:

(1)无参数无返回值函数 

# 无参数无返回值函数
def add():        # 加法
    a=1
    b=1
    print(f"{a}+{b}={a+b}")

(2)有参数无返回值函数

# 有参数无返回值函数
def sub(a,b):        #减法
# a和b是sub函数参数:称为形式参数,简称形参  a和b都是参数名称,遵守python标识符规范
    print(f"{a}-{b}={a-b}")

 

函数的功能执行完成以后最终返回给调用方的结果,将这个结果称为函数返回值。函数有返回值通过return关键字来实现,在函数的末尾加上return关键字,在这个关键字后面加上想要返回的结果。python所有函数都有返回值,如果一个函数没有return时候,会隐式调用return None作为返回值,返回值就是None。一般情况下,如果函数执行return语句,函数就会立即返回,函数的调用就会结束,return语句后面语句块不会被执行。

(3)无参数有返回值函数

# 无参数有返回值函数
def divid():        # 除法运算
    numa = int(input("请输入第一个整数:"))
    numb = int(input("请输入第二个整数:"))
    return numa/numb

(4)有参数有返回值函数

# 有参数有返回值函数
def multiple(a,b):        # 乘法
    return a*b

 3、函数的参数的类型

(1)参数位置

sub(a,b)中的a,b。调用具有位置参数的函数时,位置参数必须赋值,否则函数调用错误。

(2)默认值函数

# 需求:计算圆面积和圆周长
def circle(r,pai=3.14):
    print(f"圆面积是{r**2*pai},圆周长{2*pai*r}")
# 调用函数
circle(2)  # r=2,pai使用默认值

具有默认值参数的函数,调用时可以使用默认值,可以重新赋值。

(3)可变参数

定义:可变参数就是传入的实参个数是可以变化的。可以是0个实参,1个实参等等实参个数是不确定的。传递多少个,函数就可以接受多少个。

python可变参数:*args习惯写法,也可以写成其他符合python标识符规范的字符。args参数接受的实参,他们会组成一个元组。

(4)关键字参数

定义:关键字参数允许输入0个或者任意含有参数名的参数(参数名=值)。这些关键字参数在函数内部会自动组成一个字典。字典的键就是参数名,键对应的值就是参数的值。

python中关键字参数:习惯写法**kwargs,kwargs可以使用其他符合python标识符规范的字符。

4、变量的作用域

变量的作用域就是变量使用范围。

(1)局部变量

定义:指的是定义在函数内的变量,只能在函数内部使用,出了这个函数是不可以使用的。

(2)全局变量

定义:指的是定义函数外部的变量,整个程序都可以使用。

注意事项:在函数中,局部变量可以引用全局变量不能对全局变量进行修改。

5、实例 

例1:编写函数可以用来计算1-n的和

# 编写函数可以用来计算1-n的和
def sum():
    a=1
    b=int(input('请输入一个数:'))
    if b>=1:
        print(f"({a}+{b})*{b}/2={(a+b)*b/2}")
    else:
        print('请重新输入一个大于1的整数')
sum()

 例2:实现计算器各种功能: + – * /  **

def add(a,b):
    return f"{a}+{b}={int(a)+int(b)}"
# 减法
def sub(a,b):
    return f"{a}-{b}={int(a)-int(b)}"
# 除法
def divid(a,b):
    return f"{a}/{b}={int(a)/int(b)}"
# 乘法
def multiple(a,b):
    return f"{a}*{b}={int(a)*int(b)}"

# 创建函数,调用其他函数
def run():
    while True:
        choice = int(input("请输入您需要的功能:1加法  2减法  3除法 4乘法   5退出系统"))

        if choice == 1:
            numa = input("请输入第一个整数:")
            numb = input("请输入第二个整数:")
            # 调用加法函数
            print(add(numa, numb))
        elif choice == 2:
            numa = input("请输入第一个整数:")
            numb = input("请输入第二个整数:")
            # 调用减法函数
            print(sub(numa,numb))
        elif choice == 3:
            numa = input("请输入第一个整数:")
            numb = input("请输入第二个整数:")
            # 调用除法函数
            print(divid(numa,numb))
        elif  choice == 4:
            numa = input("请输入第一个整数:")
            numb = input("请输入第二个整数:")
            # 调用乘法函数
            print(multiple(numa,numb))
        elif choice == 5:
            print("欢迎下次使用!")
            break
        else:
            a = input("您的输入非法,是否重新输入:y是,n否")
            if a == "n":
                print("欢迎下次使用!")
                break

# 调用run函数,执行计算器
run()

 例3:计算图形面积,提前要实现登录功能。

# 创建函数:计算图形面积
def login():
    for i in range(3):
        username=input('请输入用户名:')
        password=input('请输入密码:')
        if (username == "admin" and password=="admin123")or(username == "root" and password=="rootroot"):
            return True
        else:
            print(f"用户名或密码错误,您还有{2-i}")
    else:
        return False

def circle_size(r,pi=3.1415926):
    return f"{pi}*({r}**2)={pi*(r**2)}"
def rectangle_size(d,h):
    return f"{d}*{h}={d*h}"
def square_size(d):
    return f"{d}**2={(d**2)}"
def triangle_size(d,h):
    return f"({d}*{h})/2={(d*h)/2}"
def parallelogram_size(d,h):
    return f"{d}*{h}={d*h}"

def run():
    flag = login()  # True,False
    while flag:
        choice = int(input("请输入您需要的计算面积的类型:1圆 2长方形 3正方形 4三角形 5平行四边形 6退出系统"))
        if choice == 1:
            r = int(input('请输入半径:'))
            print(circle_size(r,pi=3.1415926))
        elif choice == 2:
            d = int(input('请输入底边长:'))
            h = int(input('请输入高:'))
            print(rectangle_size(d,h))
        elif choice == 3:
            d = int(input('请输入边长:'))
            print(square_size(d))
        elif choice == 4:
            d = int(input('请输入底边长:'))
            h = int(input('请输入高:'))
            print(triangle_size(d,h))
        elif choice == 5:
            d = int(input('请输入底边长:'))
            h = int(input('请输入高:'))
            print(parallelogram_size(d,h))
        elif choice == 6:
            print("退出系统!")
            break
        else:
            a = input("您的输入非法,是否重新输入:yes是,no否")
            if a == "no":
                print("欢迎下次使用!")
                break
run()

 

 

作者:程丞Q香

物联沃分享整理
物联沃-IOTWORD物联网 » Python函数详解与优化技巧

发表回复