python-函数入门(一)

简介: 1.什么是函数: 可重复使用的,用来实现单一,或相关联功能的代码段。 函数分为内置函数和自定义函数,这里先讲自定义函数 2.如何定义函数: #语法 def 函数名(参数1,参数2,参数3,.

1.什么是函数:

可重复使用的,用来实现单一,或相关联功能的代码段。

函数分为内置函数和自定义函数,这里先讲自定义函数

2.如何定义函数:

#语法
def 函数名(参数1,参数2,参数3,...):
    '''注释'''
    函数体
    return 返回的值

注:函数必须先定义才能使用,定义阶段不执行代码只检测语法.意思就是语法错误在定义阶段就会检测出来,代码的逻辑错误只有在执行时才会提示.

3.定义函数的三种形式

无参:用于执行一些打印等操作,不需要参数传进去

有参:需要根据传进去的参数进行运算

空函数:用于设计代码结构

#     1.无参函数
# def foo():
#     print('from foo')
# foo()
#     # 2.有参函数
# def bar():
#     print(x,y)
# bar(1,2)
#     # 3,空函数
# def func():
#     pass

4.函数调用

函数调用就是函数名加个()即可

4.1调用函数的三种形式:

# 1.语句形式
# def foo():
#     print('from foo')
# foo() 
#
# 2.表达式形式
# def foo(x,y):
#     res = x+y
#     return  res
# res = foo(1,2) 

# 3.可以当做参数传给另外一个函数
# def max2(x,y):
#     if x>y:
#         return x
#     else:
#         return y
# res = max2(max2(1,2),3)
# print(res)

4.2函数的返回值

1.返回值没有类型限制

2.返回值没有个数限制

注:返回多个值的结果就是返回一个元组,0个值返回为None

return是函数结束的标准,可以有多个return但只执行一次

# def f1():
#     print('111')
#     return 1
#     print('222')
#     return 2
#     print('333')
#     return 3
#def f1()
#只执行 print('111')

4.3函数的参数

函数的参数分为形参和实参.形参即为变量名,实参为变量值,在函数调用时,把值绑定到变量名上,在函数调用结束后,解除绑定

形参与实参的具体分类(重点)

1.位置参数

1.1位置形参

  在定义函数阶段按照从左到右的顺序定义的形参.   注:按位置定义的形参必须被传值,多一个不行,少一个也不行

# def foo(x,y)
#     print(x,y)
#
# foo(1,2)    #正确
# foo(1,2,3) #错误

1.2位置实参

  在调用函数阶段按照从左到右的顺序依次传入的值.

2.关键字参数

  关键字实参:在调用函数阶段,按照key=value的形式指名道姓的为指定值传值

  注:可以完全打乱顺序,仍可以为指定的形参传值

    可以混合使用位置实参和关键字实参,但必须注意(1)位置实参必须放在关键字实参前面(2)不能对一个形参重复赋值

 

def foo(name,age):
    print(name,age)

foo('zfj',18)
foo(age=18,name='egon')
# foo(name='zfj',18)#报错
# foo('zfj', age=18)

 

3.默认参数

  指的是在定义阶段就已经为某个形参赋值了,该形参称之为有默认值的形参

注意:1.在定义阶段就已经被赋值,意味着在调用阶段就可以直接使用,默认参数

   2.位置形参应该放到默认形参前面

   3.默认参数的值,通常应该为不可变类型

 

def foo(x,y=2):
    print(x,y)
foo(1)#1,2
foo(1,3)#1,3

 

4.可变长度参数

  站在实参的角度,参数长度可变指的是在调用函数时,传入的实参的值个数不固定

  4.1在形参中带“*”:会将调用函数时溢出的位置实参保存为元组的形式,然后赋值给*后的变量

def foo(x,y,*z):
    print(x,y,z)
foo(1,2,3,4,5)#1 2 (3, 4, 5)

  4.2在形参中带“**”:会将调用函数时溢出的关键字实参保存成字典的形式,然后赋值给**后的变量名

def foo(x,y,**z):
    print(x,y,z)
foo(1,2,a=1,b=2)#1 2 {'a': 1, 'b': 2}

  4.3在实参中带“*”:在传值前先被打散成位置实参,然后再进行赋值

def foo(x,y,*z):
    print(x,y,z)
foo(1,*[2,3,4,5,6])#1 2 (3, 4, 5, 6)

  4.4在实参中带“**”:在传值前先被打散成关键字实参,然后再进行赋值

def foo(x,y,z):
    print(x,y,z)
foo(1,**{'y':2,'z':1})#1 2 1

5.命名关键字参数

放到*与**之间的参数称为命名关键字参数。函数的调用者可以传入任意不受限制的关键字参数

注意:命名关键字参数必须按照key = value的形式传值

 

补充:

在形参中带*与**的,*后的变量名应该为args,**后应该是kwargs

# 当我们想要将传给一个函数的参数格式原封不动地转嫁给其内部的一个函数,应该使用下面这种格式
def bar(x,y,z):
    print(x,y,z)
def wrapper(*args,**kwargs):
    bar(*args,**kwargs)
wrapper(1,2,z=3) #虽然调用的是wrapper,但是要遵循的却是bar的参数标准

 

焚膏油以继晷,恒兀兀以穷年。
相关文章
|
12天前
|
Python
python函数的参数学习
学习Python函数参数涉及五个方面:1) 位置参数按顺序传递,如`func(1, 2, 3)`;2) 关键字参数通过名称传值,如`func(a=1, b=2, c=3)`;3) 默认参数设定默认值,如`func(a, b, c=0)`;4) 可变参数用*和**接收任意数量的位置和关键字参数,如`func(1, 2, 3, a=4, b=5, c=6)`;5) 参数组合结合不同类型的参数,如`func(1, 2, 3, a=4, b=5, c=6)`。
14 1
|
5天前
|
机器学习/深度学习 数据可视化 数据挖掘
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
16 1
|
5天前
|
Serverless 开发者 Python
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
37 1
|
5天前
|
人工智能 数据挖掘 程序员
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
34 0
|
5天前
|
索引 Python
Python高维变量选择:SCAD平滑剪切绝对偏差惩罚、Lasso惩罚函数比较
Python高维变量选择:SCAD平滑剪切绝对偏差惩罚、Lasso惩罚函数比较
|
6天前
|
机器学习/深度学习 数据采集 算法
scikit-learn入门指南:从基础到实践
【4月更文挑战第17天】这篇指南介绍了scikit-learn,一个Python数据分析和机器学习的重要库。内容涵盖安装、数据加载与预处理、模型训练(如KNN分类器)、评估、调参优化及高级应用,如降维和聚类。通过实例展示了scikit-learn在分类任务中的使用,强调其在数据科学中的重要性。要深入了解,可参考官方文档和实践案例。
|
7天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
44 0
|
7天前
|
程序员 索引 Python
06-python数据容器-set(集合)入门基础操作
06-python数据容器-set(集合)入门基础操作
|
7天前
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
|
8天前
|
Python
python学习10-函数
python学习10-函数