随笔 - 22  文章 - 0 评论 - 0 阅读 - 76
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

help(函数) #查看函数功能
函数:
1.功能性
2.隐藏细节
3.代码重用

import sys
sys.setrecursionlimit = 1000000 # to increase the recursion limit

def print(code):

print(code)

print('python')

自定义函数 如果与内置函数同名,可能会引起无线递归

def print_code(code): # 定义一个名为print的函数,接受一个参数code
print(code) # 在函数内部调用内置的print函数,打印传入的code参数

print_code('python')

函数中没有return语句,默认返回None

当函数内部遇到return语句,函数会立即返回,不再执行后面的代码

函数可以接受任意数量的参数,参数之间用逗号分隔

函数的参数可以是任意类型,包括数字、字符串、列表、字典等

函数的参数可以设置默认值,如果没有传入参数,则使用默认值

函数的参数可以设置可变参数,使用*args表示,可以接受任意数量的参数,这些参数会被封装成一个元组

函数的参数可以设置关键字参数,使用**kwargs表示,可以接受任意数量的关键字参数,这些参数会被封装成一个字典

函数的参数可以设置命名参数,使用args和**kwargs可以同时使用,args必须在**kwargs之前

函数的参数可以设置参数的顺序,使用args和**kwargs可以同时使用,args必须在**kwargs之前

函数也可以返回一个函数

函数可以返回多个值

def damage(skill1,skill2):
    # 计算第一个技能的伤害值
    # 伤害值由技能1的值乘以2再加上5
    damage1 = 2 * skill1 + 5
    # 计算第二个技能的伤害值
    # 伤害值由技能2的值平方后再乘以0.5
    damage2 = skill2 * skill2 * 0.5
    # 返回两个技能的伤害值
    return damage1,damage2
damages_skill1,damsge_skill2 = damage(2,4)
print(damages_skill1,damsge_skill2)

序列解包,将序列中的元素依次赋值给多个变量

a,b,c = 1,2,3
d = 1,2,3
a,b,c = d
print(a,b,c)
print(a,b,c)

# 参数

1. 必须参数

函数定义的时候 形式参数

函数调用的时候 实际参数

def add(a,b):  # 定义一个名为add的函数,接受两个参数a和b
    return a+b  # 返回a和b的和
d = add(13,2)
print(d)
## 2.关键字参数  可以不指定参数顺序
def add(a,b):  # 定义一个名为add的函数,接受两个参数a和b
    return a+b  # 返回a和b的和
d = add(b = 1,a = 2)
print(d)
## 3.默认参数
def add(a,b=1):  # 定义一个名为add的函数,接受两个参数a和b,b的默认值为1
    return a+b  # 返回a和b的和
d = add(1)
print(d)
# 如果要改变默认参数 直接传入参数即可(实参顺序必须要和形参顺序一致)
# 非默认参数必须在默认参数之前   python规范
## 4.可变参数
# *args  传入的参数为元组
def add(*args):  # 定义一个名为add的函数,接受任意数量的参数
    return sum(args)  # 返回参数的和
d = add(1,2,3,4,5)
print(d)
# **kwargs  传入的参数为字典
def add(**kwargs):  # 定义一个名为add的函数,接受任意数量的参数
    return sum(kwargs.values())  # 返回参数的和
d = add(a=1,b=2,c=3)
print(d)
# *args和**kwargs可以同时使用,但必须先写*args,后写**kwargs
# *args和**kwargs可以接受任意数量的参数,但必须按照顺序传入
posted on   Martinl_it  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示