DAY 5 Python的函数

函数定义与特性

将一组语句的集合通过一个名字(函数名)封装起来,想要执行这个函数,只需调用其函数名即可。使用函数可以减少重复代码,并使程序变得可扩展和易维护。

# 自定义函数的语法

def 函数名():
    实现函数功能的代码块

函数的参数

形式参数 - 函数定义时使用的参数(可理解为在函数定义时使用的占位符)。

实际参数 - 调用函数时输入的参数(实参有实际的值)。

def sayhi(name,age):    #name和age是形式参数
    print(f"hello my name is {name},i am {age} years old..")
    print("ddd")

sayhi("Aaliyah",23)    #“Aaliyah”和23是实际参数

默认参数 - 可在函数调用时指定值,如未指定则使用默认值。默认参数一定要放在参数列表的最后,因为默认参数可以省略,如果放在非末尾的地方,解释器无法判断该参数是默认参数还是其他参数。

def stu_register(name,age,course,country="CN"):    #country默认值为"CN"
    print("----注册学生信息----")
    print("姓名:",name)
    print("年龄:",age)
    print("国籍:",country)
    print("课程:", course)

stu_register("王山炮",22,"pythong_devops") #如果没有指定值,则显示默认值
stu_register("张叫春",21,"linux",country="JP") #有指定值,显示指定值
stu_register("张叫阳",21,"linux","US") #不写参数名也可以

位置参数 - 通过位置确定参数赋值。向函数中输入参数时,需要和函数参数列表顺序相同。

关键参数 - 通过参数名确认参数赋值。关键参数必须放在位置参数的后面。关键参数的赋值一定要在位置参数的后面。

def stu_register(name,age,country,course):
    print("----注册学生信息----")
    print("姓名:",name)
    print("年龄:",age)
    print("国籍:",country)
    print("课程:", course)

stu_register("王山炮",course = 'PY',age = 22,country = 'JP'") #关键参数带参数名,赋值顺序打乱也没关系
stu_register("王山炮",course = 'PY',22,country = 'JP'")    #不可以这样!
stu_register("王山炮",22,age=25,country='JP')  #age赋值两次,也不行

固定参数 - 向函数输入的参数个数是固定的。

非固定参数 - 向函数输入的参数个数是不固定的,参数列表的最后可以用*args或**kwargs占位。

# 使用*args 后续输入的参数以元组形式存储
def stu_register(name,age,*args):
    print(name,age,args)
stu_register("alex",22) #输出:alex 22 ()
stu_register("alex",22,"M","girl",12345678900)  #输出:alex 22 ('M', 'girl', 12345678900)


def stu_register_2(name,age,*args):
    print(name,age,args[0])
stu_register_2("alex",22,"M","girl",12345678900) #输出:alex 22 M

函数返回值

return - 返回执行结果;函数遇到return代表执行结束,后续语句不再执行。

def stu_register(name,age,country,course):
    print("----注册学生信息----")
    print("姓名:",name)
    print("年龄:",age)
    print("国籍:",country)
    print("课程:", course)
    if age > 22:
        return False
    else:
        return True
        # 还可以这样
        # return True, age, name, course
        # 最后打印结果是一个元组:(True, 18, '王山炮', 'py')

#返回值;如果不返回,则是一个空值None
registriation_status = stu_register("王山炮",18,course="py",country='JP')
print(registriation_status)
if registriation_status:
    print("注册成功")
else:
    print("too old to be a student.")

局部变量与全局变量

在函数中定义的变量为局部变量,在程序的一开始定义的变量是全局变量。遇到变量名,先匹配局部变量,没有找到匹配的变量时才会匹配全局变啊领。一般来说,在函数中是不能够修改全局变量的。如果一定要在函数中使用全局变量,可以这样声明:

global name = "Aaliyah"

由于这样操作可能会导致变量混乱,非必须情况下不建议使用。

向函数传递列表、字典

一般来说,在函数中是不能够修改全局变量的,但有一种情况除外。当向函数传递列表、字典等非字符串、非数字类型变量时,在函数中也可以修改变量的值。原理:字典、列表内各元素地址独立,并不共享连续的内存空间。

附:常用内置函数

# abs() - 取绝对值
abs(-10)
abs(10)


# any() - 任意一个值为True,则返回True,否则返回False
b = [1,0,3,4,5,6,7]
any(b)


# chr() - 打印对应的ASCII码字符
chr(60)

#ord() - 与chr相反,输入一个字符,返回该字符的ASCII码
ord("<")


# dict
# - 生成空字典
print(dict())    #输出:{}
print(dict(name="alex",age=22))    #输出:{'name': 'alex', 'age': 22}


# dir() - 以列表的形式打印当前(作用域)的所有变量名
name = "alex"
age = 22
print(dir())
print(__file__)
# 输出:
# ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'age', 'name']


# locals() - 打印当前(作用域)所有变量名和变量值
name = "alex"
age = 22
print(locals())
# 输出:
# {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001A88DD51AF0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'C:/Users/hmy24/Desktop/python学习/学习使用pycharm/test测试.py', '__cached__': None, 'name': 'alex', 'age': 22}


# map() - 输入函数和列表,把列表中的每一个元素输入函数运行
l = list(range(10))
print(l)
def calc(x):    #只能定义一个参数
    return x **2
print(calc) #打印函数所在内存地址
m = map(calc,l)  #并没有执行(迭代器)
print(m)
print("-------------")
for i in m: #真正执行,每循环一次,就把列表中的数据传给calc函数运算一次并返回结果
    print(i)
# 输出:
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# <function calc at 0x000001E32BC3FF70>
# <map object at 0x000001E32BAF45B0>
# -------------
# 0
# 1
# 4
# 9
# 16
# 25
# 36
# 49
# 64
# 81


# max() min() - 打印列表中的最大值
l = list(range(10))
print(max(l),min(l))
# 输出:9 0


# enumerate() - 输入一个列表,函数以元组形式输出列表的索引和对应数值
for index,val in enumerate(range(10)):
    print(index,val)
# 输出:
0 0
# 1 1
# 2 2
# 3 3
# 4 4
# 5 5
# 6 6
# 7 7
# 8 8
# 9 9


# round() - 保留指定位数的小数,如果第二个参数未指定,默认不保留小数
print(round(3.1234567,2))
# 输出:
# 3.12


#sum() - 求和
print(sum([1,2,3]))
# 输出:
# 6


# zip() - 两个列表配对
a = ["nan1","nan2","nan3"]
b = ["nv1","nv2","nv3"]
for i in zip(a,b):
    print(i)
# 输出:
# ('nan1', 'nv1')
# ('nan2', 'nv2')
# ('nan3', 'nv3')


# filter - 用于过滤序列,第一个参数为用以过滤的函数名,第二个参数为序列
l = list(range(10))
def compare(x):
    if x>5:
        return x
for i in filter(compare,l):
    print(i)
# 输出:
# 6
# 7
# 8
# 9


# 做布尔值判断,返回True或False
bool(10)
bool(0)
bool(True)
bool(False)


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python函数split是用来将一个字符串按照指定的分隔符进行分割的函数。根据提供的引用内容,可以得出以下结论: 引用中的代码示例展示了split函数在情况一下的使用。在这个情况下,字符串s是"an apple a day",split函数的参数是'a',它会将字符串s按照'a'进行分割,并返回分割后的部分。在这个例子中,返回的结果是['', 'n ', 'pple ', ' d', 'y']。 引用中的代码示例展示了split函数在情况三下的使用。在这个情况下,字符串s是"an apple||a day",split函数的参数是'||',它会将字符串s按照'||'进行分割,并返回分割后的部分。在这个例子中,返回的结果是['an apple', 'a day']。 引用中的代码示例展示了split函数在情况二下的使用。在这个情况下,字符串s是"an apple a day",split函数的参数是''(空字符串),它会将字符串s按照空格进行分割,并返回分割后的部分。在这个例子中,返回的结果是['an', 'apple', 'a', 'day']。 综上所述,根据不同的情况和参数,Python函数split可以按照指定的分隔符将字符串进行分割,并返回分割后的部分。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python中split函数](https://blog.csdn.net/u014125025/article/details/100639792)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值