Python3函数,形参,实参,返回值及相关细节

简介: 揭示和总结Python函数定义,形参实参,参数个数,函数返回值等等问题

Python3基础——函数

(赠言):编程实现某项功能最终都依赖与函数,函数是实现某个功能的代码集合体,实现某一逻辑功能的都可以定义成一个函数,它给程序提供了简洁,可读的优良特质。大家在编程过程中要尽量将某一逻辑功能的代码块定义成函数,这样能增加代码的可阅读性同时能是程序看起来更简洁。

  1. 函数声明定义:Python函数定义并不像c++,java,c.....定义那样c++函数定义.

    • c,c++,java函数定义
      (返回类型) 函数名(参数列表)

---返回类型有 void(无返回),int(返回一个整型值) ,double(返回一个双精度浮点值).....等等
:void getName(string name) ,int getNumber(int number) 。
下面我们来看看Python怎么进行函数定义的

  • Python函数定义
    def 函数名 (参数列表):

def是关键字,目的是让Python知道你定义了一个函数,而不是其他
子如:
**def get_name(name):
def get_number(number):**
-------为什么函数命名会是这样呢?我在Python基础--Python命名规范一文中详细阐述了
-------至于参数见下

  1. 参数:参数是用户或者程序员向函数传递信息的媒介或者说形式;参数分为:形参,实参

    • 形参:就是函数声明给出的括号内的 (目的:形参只是一个形式,让Python知道这个函数需要这要的参数,没有实际意义)如:def get_name(name):中的name就是形参。
    • 实参函数调用括号内出现的(具有忒定意义的值,有实际值,实际含义)
      我们调用函数

get_name("Daming")
调用函数时括号内出现的“Daming”这一字符串实体就是实参,有实际值,实际含义。

  • 形实对应相关问题:下面是关于可变参数,默认参数等一系列问题

    1. 位置实参 *:及函数调用时参数的位置不能随意变化,否则可能出现逻辑错误或者得不到你想要的结果
      如程序
  def get_people_hobby(name,hobby):
        """用于描述某人的爱好"""
                 print(name," likes ",hobby)
get_people_hobby("Daming".title(),"football")
get_people_hobby("football".title(),"Daming")

结果:调换实参位置之后并没有出现我们想要的结果------结论不可随便改变实参位置
_

  1. **关键字实参**:及在调用函数过程中将形参与实参绑定在一起,这样不论位置怎样都能得到我们想要的结果

def get_people_hobby(name,hobby):
        """用于描述某人的爱好"""
                 print(name," likes ",hobby)
#get_people_hobby("Daming".title(),"football")
#get_people_hobby("football".title(),"Daming")
get_people_hobby(name="Xiaohong".title(),hobby="piano")
get_people_hobby(hobby="piano",name="Xiaohong".title()

运行结果:当形参与实参绑定在一起之后,位置的改变并不会引起结果的改变
_

 1. **给参数设定默认值**:有的时候参数是用默认值的 (**注意:**有默认值得参数一定**位于所有未给**默认值形参的**后面**)

    如当这样定义函数时定义(**错误**):
def discrible_default(type="human",feature):

IDE给你指出错误:未给默认值参数位于有默认值参数之后
_

    **正确定义方式**:
def discrible_default(feature,type="human"):
        print(type.title()," is ",feature)
    当我们**调用有默认参数**的函数时:

若实参比形参少,Python会优先将前面的形参与给出的实参绑定(及按照先后顺序进行形参与实参绑定)有默认值得参数将会采用默认值:如下:

def discrible_default(feature,type="human"):
                 print(type.title()," is ",feature)
discrible_default("intelligent")

结果
_
当然有默认值的参数也可以改变值:如下:

def discrible_default(feature,type="human"):
                 print(type.title()," is ",feature)
discrible_default("intelligent")
discrible_default("fool","pig".title())

结果:_
总结:要想程序按照我们想的正确方向运行,形参和实参的绑定是关键,只要形参和实参正确绑定,那么结果就能正常运行,出现运行结果错误的无非是形参与传递的实参就绑定错误。

  1. ** 传递任意数量参数的函数定义:**用于预先不知道函数需要接受多少实参
def get_type(*types):
        # *type中的*相当于让Python创造一个名为type的空元组
                print(types)
get_type("human","monkey")            #两个实参
get_type("dog","pig","cat")           #三个实参
    ![_](https://yqfile.alicdn.com/2185e96ff78e226fb80f309dd8aef0d594a597b7.png)
  1. **传递任意关键字实参:**用于接受任意数量的实参,但是不知道传递给函数的是什么样的信息

如下程序:要求:创建一个用户信息,基本的有名字但是每个用户可以自己添加自己不同数量不同类型的详细信息

def build_user_information(name,age,**info):
        """创建用于存储基本信息和用户自定义信息的字典"""
                 users_information={}
                 users_information["name"]=name
                 users_information["age"]=age
                 for key,value in info.items():
                     users_information[key]=value
                 return users_information
print(build_user_information("Daming",32,address="beijing",work="programmer"))
#用户自己传递了自己的家庭住址和职业
print(build_user_information("Lihua","18",hobby="swim",height=170,midle_school_address="linshui"))
#除了名字,年龄外,用户自己传递了自己的爱好,身高以及中学学校地址
    结果:

_

  1. 返回值:有时候我们需要利用函数处理一些数据,然后将处理后的数据返回给用户,这时候就要用到返回值
    Python利用关键之return来达到返回数据的目的 return 后面的返回值得类型是多种多样的 可以是int ,double,string,也可以是元组,列表以及字典

如下实例:

def get_information(*info):
            """创建一个列表用于存储用户输入的信息,并返回这个列表"""
            information=[]
            for item in info:
                #循环,将用户输入的信息复制到information这个列表中
                information.append(item)
            return information
            #用于返回information列表
print(get_information("Daming",21,"student"))
结果:

_

目录
相关文章
|
14天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
26 3
|
18天前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
28 2
|
1月前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
3天前
|
存储 人工智能 Python
[oeasy]python061_如何接收输入_input函数_字符串_str_容器_ 输入输出
本文介绍了Python中如何使用`input()`函数接收用户输入。`input()`函数可以从标准输入流获取字符串,并将其赋值给变量。通过键盘输入的值可以实时赋予变量,实现动态输入。为了更好地理解其用法,文中通过实例演示了如何接收用户输入并存储在变量中,还介绍了`input()`函数的参数`prompt`,用于提供输入提示信息。最后总结了`input()`函数的核心功能及其应用场景。更多内容可参考蓝桥、GitHub和Gitee上的相关教程。
7 0
|
1月前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
73 8
|
3月前
|
Java Go C++
【Python】函数的定义和调用、形参和实参、函数的返回值、多元赋值、全局和局部变量
【Python】函数的定义和调用、形参和实参、函数的返回值、多元赋值、全局和局部变量
36 0
|
Python
编程大神一道题带你搞定Python函数中形参和实参问题
昨天在Python学习群里有位路人甲问了个Python函数中关于形参和实参一个很基础的问题,虽然很基础,但是对于很多小白来说不一定简单,反而会被搞得稀里糊涂。
1459 0
|
1月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
1月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。