首页 > 编程语言 >python 第四章 函数 (pycharm) (2)

python 第四章 函数 (pycharm) (2)

时间:2024-05-28 21:01:33浏览次数:17  
标签:name python 数据 list 参数 print pycharm data 第四章

一 :变量作用域

变量的作用域就是指在代码中变量能使用的位置

变量的引用

def func(a):
    print(a)
data = 10
func(data) # a=data  参数a引用了data的数据
data2 = 20
func2(data2) 

变量的分类

  • 全局变量

    • 在函数外定义,可以在代码中任意位置使用的变量

  • 局部变量

    • 在函数内定义,在函数内能使用

# 变量引用
data = 10 # 外部的变量值叫做全局变量

def func(data):
    # 参数传参引用方式 获取外部的变量值进行计算
    # 内部的变量值叫局部变量
    data = data+1
    print(data)

def func2():
    # data没有参数是,当成局部变量,但是此时局部变量data没有被定义会报错
    # 通过 global 声明外部变量值作为局部变量使用
    global data
    data = data+1
    print(data)
def func3():
    global data
    data =  data+1
    print(data)


def func4(data):
    data = data+1
    print(data)

func(data)
func4(data)

# func2()
# func3()

变量的作用域 指的变量能使用的范围

全局变量 可以代码的任意位置使用

局部变量 只在当前函数内有效

在函数内使用全局变量 有两种方式

第一种 当成参数传参 将全局变量传递给函数参数(函数内的局部变量)

  • 当成参数使用时 则相当于参数引用了全局变量的值,对参数进行操作,不影响全局全局变量的值

第二种 global声明 在函数内进行使用

  • 在函数内直接操作全局变量,会修改全局变量的值

# 多个函数中都要使用的变量可以定义成全局变量,通过global声明,就可在多个函数就可以共享全局数据
name_list = []
password_list = []

# 登录注册功能
def login():
    # 函数作用域
    # 通过四个空格,来确认函数所执行的逻辑从哪里开始
    # 列表,元组,集合,字典数据可以省略global声明
    global name_list
    global password_list
    for num in range(3):  # [0,3)  0,1,2
        name = input('请输入用户名:')
        password = input('请输入密码:')
        # 先判断用户名是否正确
        if name in name_list:
            # 在判断密码是否正确
            if password in password_list:
                print('登录成功')
                # 适应break关键,会结束循环,不再进行取值
                break
            else:
                print('密码不正确')
        else:
            print('用户名不正确')

def register():
    global name_list
    global password_list
    name = input('请输入注册的用户名:')
    password = input('请输入出注册的密码:')
    # 将用户的名字和密码添加到全局的数据列表
    name_list.append(name)
    password_list.append(password)
    
while 1==1:
    num = input('1-登录 2-注册 3-支付 4-下单 5-退出程序:')
    if num == '1':
        # 函数功能的调用
        login()  # 函数名()
    elif num == '2':
       register()
    elif num == '3':
        pass
    elif num == '4':
        pass
    else:
       break

data = 10


def func(a):
    """
        将字符串数据进行复制
    :param a:
    :return:
    """
    data_str = 'itcast'
    print(data_str * a)


def func2(data):
    """
        数据相加
    :param data:
    :return:
    """

    data = data+25
    print(data)

func2(data)
func(data)

二:函数参数详解

  • 形参

    • def func(形参)

    • 在函数定义时指定的参数

    • 本质形参可以理解为函数定义的内部变量,接收外部传递的数据

    • 缺省参数

      • 可以定义一个默认值,当形参没有传递数据时,可以使用默认值

    • 不定长参数

      • 接收任意个数的数据

      • *args 不能接受关键字传参的数据 接受位置参数的数据

      • **kwargs 接受关键字参数数据

  • 实参

    • func(实参)

    • 在函数调用时指定的参数数据

      • 位置参数

        • 在传递实参数据时,需要按照参数的位置进行数据的传递

        • 传递数据个数个形参个数一致

      • 关键字参数

        • 按照形参的名称传递数据

        • 形参=数据

def func(形参):
    
# 函数调用时传递的参数数据 实参
func(实参)

# 使用实参传递数据
# 定义一个学生列表保存多个学生数据
stu_list = []
def add_student(name,age,gender,address):
    """
        添加学生数据
    :param name: 姓名 str类型
    :param age: 年龄 int类型
    :param gender: 性别 str类型
    :param address: 地址 str类型
    :return:
    """
    # 往列表中添加学生数据
    stu_list.append({'name':name,'age':age,'gender':gender,'address':address})


# 实参传递数据的方式1  位置参数
# 按照参数的顺序和数量传递数据
add_student('张三',20,'男','北京') # 位置传参
print(stu_list)

# 方式2 关键字参数
# 使用参数的名称指定数据,和顺序无关
add_student(address='上海',age=22,name='李四',gender='男') # 使用参数名传递数据
print(stu_list)

# 混合使用 保证位置参数在前面 关键字参数在后面
# add_student(address='广州',20,'张三')
add_student('王五',20,gender='男',address='广州')
print(stu_list)
# 使用实参传递数据
# 定义一个学生列表保存多个学生数据
stu_list = []
def add_student(name,age,gender,address='北京'):
    """
        添加学生数据
    :param name: 姓名 str类型
    :param age: 年龄 int类型
    :param gender: 性别 str类型
    :param address: 地址 str类型  默认值北京  缺省参数,当没有传递数据是,使用默认的数据
    :return:
    """
    # 往列表中添加学生数据
    stu_list.append({'name':name,'age':age,'gender':gender,'address':address})


# 实参传递数据的方式1  位置参数
# 按照参数的顺序和数量传递数据
add_student('张三',20,'男','北京') # 位置传参
print(stu_list)

# 方式2 关键字参数
# 使用参数的名称指定数据,和顺序无关
add_student(address='上海',age=22,name='李四',gender='男') # 使用参数名传递数据
print(stu_list)

# 混合使用 保证位置参数在前面 关键字参数在后面
# add_student(address='广州',20,'张三')
add_student('王五',20,gender='男',address='广州')
print(stu_list)

add_student('赵六',20,gender='男')
print(stu_list)
# 使用形参接受数据
# 定义一个学生列表保存多个学生数据
stu_list = []
# 不确定学生数据到底有哪些数据内容,传递的数据个数无法确定
# 此时就可以使用不定长参数,接受任意个数的数据
def add_student(*args,**kwargs):
    # *args接受位置参数传递的多个数据,会将数据保存在元组中
    # **kwargs接受关键字参数传递多个数据,将数据保存在字典中
    # 往列表中添加学生数据
    if len(args) !=0:
        stu_list.append(args)
    if len(kwargs) !=0:
        stu_list.append(kwargs)

add_student('张三',20,'男')
print(stu_list)

add_student('李四',22,'男','北京')
print(stu_list)

add_student(name='张三',age=20)
print(stu_list)

add_student(name='张飞',age=20,address= '河北')
print(stu_list)

三:函数的数据传递

将函数外部数据传递到函数内部使用

# 将外部数据传递到函数内部
# 方式1 定义全局变量
data_str = 'itcast' # 不可变类型数据 数据本身不可修改
data_list = ['hadoop','hive','spark','python'] # 可变类型  数据本身可修改

def func():
    # 在函数内进行修改全局变量数据
    # 需要使用global 声明
    global data_str  # 不可变类型
    data_str  = data_str+'python'
    print(data_str)
    
    # global data_list  数据是可变类型,省略global声明
    data_list.append('flink')
    print(data_list)

func()
# # 将外部数据传递到函数内部
# # 方式1 参数传递
data_str = 'itcast' # 不可变类型数据 数据本身不可修改
data_list = ['hadoop','hive','spark','python'] # 可变类型  数据本身可修改

# 在函数定义时,定义参数接收数据
def func(data):
    print(id(data))


# 函数调用时传递参数数据  相当于是变量赋值
func(data_str)  # data = data_str  # 当对data进行操作就是对data_str
print(id(data_str))
print('----------------------')
func(data_list) # data = data_list # 当对data进行操作就是对data_list
print(id(data_list))

函数内部数据传到函数外部使用

# 局部变量数据传递到外部

def func():
    data = [1, 2, 3]
    data.append(4)
    print(data)
    # 需要将函数内的局部 变量传递外部使用
    # 借助返回值return 将内部的局部变量返回外部使用
    print(id(data))
    return data


# 调用函数时,定义变量接收函数返回值
data_res = func()  # 返回值 等价 data_res = data
print(data_res)
print(id(data_res))


# 可以将上一个函数的返回值传递到下一个函数
def func2(data2):
    # data2 = data_res
    print(data2)
    print(id(data2))
    data2.append(5)

# 将data_res 传递给func2
func2(data_res)

# data,data_res,data2代表的同一个数据
print(data_res)

标签:name,python,数据,list,参数,print,pycharm,data,第四章
From: https://blog.csdn.net/m0_62008384/article/details/139277784

相关文章

  • 【python】中国五大城市PM2.5 数据分析(含数据集及完整代码)
    目录问题描述(数据集、项目代码已资源绑定)前瞻 数据预处理数据可视化北京上海广州成都沈阳总览对比图北京部分代码问题描述(数据集、项目代码已资源绑定,见文章开头) 数据集前瞻         随着工业化和城市化的迅速发展,全球多个城市都面临着空气污......
  • python——拼图游戏
    目录前言一、拼图游戏介绍二、游戏设计思路三、程序设计步骤3.1Python处理图片切割3.2游戏逻辑的实现3.3全部代码 总结前言利用python,通过将一幅图片分割成若干拼块并将它们顺序随机打乱来编写拼图小游戏。一、拼图游戏介绍拼图游戏是将一幅图片分......
  • python 队列生产者消费者爬虫
    当使用Python编写一个基于队列的生产者消费者爬虫时,我们通常会使用threading或multiprocessing模块来处理并发,并使用queue模块来管理数据队列。下面是一个详细的示例,该示例展示了如何使用生产者线程生成URL,消费者线程爬取这些URL的内容。请注意,这里为了简化示例,我们将不会实际进......
  • XV-Python-requests_html
    目录        1.requests_html        1.1.什么是requests_html        1.2.安装与配置        1.3.快速入门        1.4.图片下载        2.思维导图1.requests_html1.1.什么是requests_htmlrequests_html是一个P......
  • 用python字典统计CSV数据
    1.用python字典统计CSV数据的步骤和代码示例为了使用Python字典来统计CSV数据,我们可以使用内置的csv模块来读取CSV文件,并使用字典来存储统计信息。以下是一个详细的步骤和完整的代码示例:1.1步骤(1)导入csv模块。(2)打开CSV文件并读取数据。(3)初始化一个空字典来存储统计信息。(4)遍......
  • Python|module 的 __spec__ 属性
    Python的module(模块)**【官方文档】**位置:https://docs.python.org/zh-cn/3/library/stdtypes.html#modules模块唯一的特殊操作是属性访问:m.name,这里m为一个模块而name访问定义在m的符号表中的一个名称。模块属性可以被赋值。(请注意import语句严格来说也是......
  • 使用Python进行数据分析与可视化的简单示例
    使用Python进行数据分析与可视化的简单示例。在这个示例中,我们将使用Pandas库进行数据分析,并使用Matplotlib库进行数据可视化。首先,假设我们有一个包含销售数据的CSV文件(sales_data.csv),其中包含以下列:日期(Date)、销售额(Sales)和产品类别(Product_Category)。CSV文件的内容可能......
  • Python基础篇(集成开发环境 PyCharm )
    PyCharm简介与下载PyCharm是由JetBrains打造的一款PythonIDE,是一款功能强大的Python编辑器,具有跨平台性,支持macOS、Windows、Linux系统。PyCharm具有:调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等优点。PyCharm下载地址:......
  • Python 文件操作指南:使用 open 和 with open 实现高效读写
    ......
  • 【QT6】pycharm集成qt desinger(非anaconda等环境下)
    前言已经安装好了PyQT6,如果没有,请自行选择在项目或者全局打开cmd并输入:pipinstallPyQt6来进行安装!开始安装确定自己是否有安装pyside6,如果有,直接跳到下一步。。如果你没有安装过pyside6,任意地方打开cmd,输入:pipinstallpySide6安装完毕后,找到你python的安装目录:然后点进......