python|函数创建和执行

函数

基本概念
  • 函数是Python为了代码最大程度的重用和最小化代码冗余而提供的基本程序结构
  • 函数是一种设计工具,它能让程序员将复杂的系统分解为可管理的部件
  • 函数用于将相关功能打包并参数化
  • 从定义函数的角度来说,我们平时会接触到的函数主要包括两类:
  1. ​ 已经写好的,我们直接调用就可以了,如Python的内置函数
  2. ​ 用户自行定义的函数,需要我们自己根据实际的要来定义

Python 定义函数必须使用def关键字,函数名自定义(函数名称的定义规范跟普通变量名一致),参数列表为传给此函数使用的参数,接着定义函数体
般格式如下:

def 函数名(参数列表):

​         函数体

函数名称的定义规范跟普通变量名一致

创建一个函数

def sum_num():
    s = 1 + 10
    print(s)
sum_num()

函数执行:

​ 方式一:print(函数名)函数中只有return

​ 方式二:函数名(函数中有print方法)

函数定义

定义函数时需要注意的几个点:
1、任何需要从外部传入的参数必须定义在函数名称后面的圆括号中。

2、函数的第一行语句可以选择性地使用文档字符串,用于函数注释。

3、函数体的内容必须缩进。当函数体的代码执行结束时,整个函数执行结束。

4、如果需要函数执行完后返回一个值给调用方,必须使用return语句来实现。当一个函数执行到return语句时,函数也将执行结束。(这个返回只用于需要返回值给调用方)

5、如果在函数执行过程中需要终止函数的执行,也可以使用return来强制结束。

函数调用

函数定义
def myFunc(name):
    print("hello",",", name)
# 函数调用,输出hello,fanyun
myFunc("fanyun")

这里要注意一点,对于函数来说,定义函数是定义,调用函数是调用。一个函数必须先定义好之后才能调用,否则会报错

创建一个函数

def sum_num2():
    s = 1 + 100
    return s
print(sum_num2())

函数参数

参数的定义:参数在函数中相当于一个变量,而这个变量的值是在调用函数的时候被赋予的。在函数内部,你可以像过去使用变量一样使用它。

函数在什么时候应该定义参数? 定义函数时,有没有参数这个是要根据具体的情况来决定的。

根据用户输入的参数值,返回对应的运算结果

def get_result(a, b, op):
    if op == '+':
        return a + b
    elif op == '-':
        return a - b
    elif op == '*':
        return a * b
    elif op =='/':
        return a / b
    else:
        print('输入错误')
print(get_result(2,6,'+'))

函数练习题

1、创建一个函数,函数需要实现的功能是 打印99乘法表

def cfb_99():
    for i in range(1,10):
        for j in range(1,i+1):
            print(f"{i}*{j}={i*j}\t",end="")
        print()
print(cfb_99())

2、创建另一个函数,函数实现的功能是计算1+到100的和

def sum_qh():
    bl = 0
    for su in range(1,101):
        bl += su
    return bl
print(sum_qh())

函数参数

形参: 也叫形式参数,也就是在函数定义时,跟在函数名后面的括号内定义的参数。形参的主要作用是用于占位,形参的实际值是由调用函数时传递的实际参数决定的。

实参: 也叫实际参数,是指函数调用时在对应的形参位置传入的实际参数值。

#函数定义
def myFunc(name):
    print("hello", ",", name)#name为形参
myFunc("woniu")#woniu为实参

创建一个函数,定义两个形参,进行运算操作

def yscz(a, b):
    c= a + b
    d = a - b
    e = a * b
    return c, d, e
print(yscz(1,2))

函数中参数指定位置传值

​ def 自定义函数名(参数1,参数2,参数3....):

​ 函数体(函数下需要实现的功能)

​ 调用函数名(参数1=xx,参数2=xx,参数3=xx)

函数参数-位置参数

位置参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

函数-不定长参数

  • 你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数。

  • 和上述2种参数不同,声明时不会命名。

  • 加了星号(*)的变量名会存放所有未命名的变量参数。如果在函数调用时没有指定参数,它就是一个空元组。

def printinfo( argc,*vartuple ):
    print ("This:")
    print (argc)
    for var in vartuple:
        print (var)
    return

printinfo(4)
printinfo( 7,'Woniuxy',20 )
  • 除了能通过*args的形式传递元组类型的不定长参数外,还可以通过定义**kwargs来
    传递字典类型的不定长参数。

def myfunc(*args, **kwargs):
    print(type(kwargs))
    for k, v in kwargs.items():
        print(k, v)
# 方法1.直接通过键值对形式传入参数
myfunc(1,2,a='hello',b='world') 
#方法2. 直接传入一个字典,但字典是一个整体,所以需要使用**来解包
dic = {'a': 'hello', 'b':'world'}
myfunc(1,2,**dic)

函数中参数的默认值

def 自定义函数名(参数1=默认值,参数2,参数3...):

        函数体(函数下需要实现的功能)

调用函数名(参数1=xx值,参数2=xx,参数3=xx)

当函数中有默认值的时候,如果参数没有传值则只用默认值,传递了新的值则会使用新的值

创建带有参数的函数,并给参数赋默认值

def yscz2(a=100,b=100,f=10):
    c = a+b+f
    d = a-b-f
    e = a*b/f
    return c,d,e
# 给指定参数传值
print(yscz2(a=100,b=100,f=40))

函数参数-默认值参数

调用函数时,如果没有传递参数,则会使用默认参数。需要函数声明时指定默认值。

def add(a,b=10):
    return a+b
print(add(4))
print(add(6,39))

函数变量作用域

Pvthon中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。

变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。

根据变量的作用域,函数中的变量可分为全局变量和局部变量

函数内的变量需要为改变全局变量时,需要在函数内使用关键字global(global x)

创建一个函数并把函数中局部变量改为全局变量

def qjbl():
    global zxzx
    zxzx= 1+100+200
    return zxzx
print(qjbl())
print(zxzx)

练习

1、求解1-100能被3和5同时整除的数字之和

s = 0
for i in range(1,101):
    if i % 3 == 0 and i % 5 ==0:
        s += i
print(s)

2、使用while,完成一下图形的输出

i = 0
while i <= 5:
    print(i* "*")
    i+= 1

3、for循环实现九九乘法表

def cfb_99():
    for i in range(1,10):
        for j in range(1,i+1):
            print(f"{i}*{j}={i*j}\t", end = "")
        print('\n')
cfb_99()

4、在1-100的数字序列中随机选择一个数作为目标数,每次游戏只能猜5次,

如果猜的结果大于目标数,则输出”大了,你还有X 次机会”

如果猜的结果小于目标数,则输出”小了,你还有X 次机会”

如果猜中了,则输出”你猜对了,只猜了X次,厉害!“退出游戏,并打印”游戏结束”

如果猜的次数用完,退出游戏并打印”次数已用完,欢迎下次再玩”。用循环实现。

import random
def guess_game():
    target = random.randint(1,100)
    count = 1 # 猜的次数
    while count <= 5:
        guess = int(input('请输入你猜的数字:'))
        if guess == target:
            print(f'你猜对了,只猜了{count}次,厉害!')
            print("游戏结束")
            break
        elif guess > target:
            print(f'大了,你还有{5-count}次机会')
        elif guess < target:
            print(f'小了,你还有{5-count}次机会')
        count += 1
    else:
        print("次数已用完,欢迎下次再玩")

guess_game()

5、使用两个函数实现模拟一个注册登录的场景

用户注册时,需要输入账号和密码,保存账号与密码。

在登录时,我们去验证输入的账号与密码,是否是已经注册,已经注册提示已注册可以登陆,未注册提示无法登陆你未注册。

def Regist(user_name,pass_word):
    global a 
    a = (user_name,pass_word)
    c = a[0]
    print(f'注册成功,账号是{c}')
Regist(user_name = input("请输入注册账号:"),pass_word=input("请输入注册密码"))
def Login(name,pwd):
    b = (name,pwd)
    if a[0] == b[0] and a[1] == b[1]:
        print("已注册,登录成功")
    elif a[0] == b[0] and a[1] != b[1]:
        print("已注册,密码错误")
    elif a[0] != b[0] and a[1] == b[1]:
        print("已注册,账号错误")
    else:
        print("没有注册")
Login(name = input("请输入账号"),pwd = input("请输入密码"))

6、定义一个函数,接收任意个数的参数。这些参数类型包含我们学过的六种基本类型,假设每种参数类型里面都只包含数字(字典类型的话就是所有值都是数字),要求函数最后返回所有参数中的数字的和。

def sum_of_args(*args):
    result = 0
    for arg in args:
        if isinstance(arg, (int,float)):
            result += arg
        elif isinstance(arg,(list, tuple, set)):
            result += sum(arg)
        elif isinstance(arg,(list, dict)):
            result += sum(arg.values())
    return result
print(sum_of_args(5,{1:1,2:2}))

  • 26
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值