函数的基本用运大全掌握

目录

一、函数参数的两大分类

二、 默认形参

三、可变长参函数

1、函数无论传入多少位置参数都可以正常的运行

 **在是惨重的使用

         .会将字典键值对打散成关键字实参传入

特点:必须按照key=value的形式传参


系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、pandas是什么?

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、使用步骤

1.引入库

代码如下(示例):

import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnings('ignore') import ssl ssl._create_default_https_context = ssl._create_unverified_context 

2.读入数据

代码如下(示例):

data = pd.read_csv( 'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv') print(data.head()) 

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

一、函数参数的两大分类

一、位置实参
在调用函数时,按照从左到右的顺序依次传入的值,称之为位置实参
   
      特点:按照位置为形参赋值,一一对应


def func(name,age):    # 定义位置形参:name,age,两者都必须被传值
    print(name)
    print(age)
    
func("jack")     # 报错,少了一个值
func("jack",19)  # 正常传值

二、关键字实参
在调用函数时,按照key = value的形式传值,称之为关键字实参
特点:可以打乱顺序,但是仍然能够指定道姓的为指定的形参赋值

def func(name,age):         # 定义位置形参:name,age,两者都必须被传值
    print(name)
    print(age)
    
func(age = 18,name = "jack")   # 正常传值

# 注意:可以混用位置实参与关键字实参,但是
# 1、位置实参必须在关键字实参的前面

func("jack",age = 18)    # 正常传值
func(age = 18,"jack")    # 报错,语法错误

# 2、不能为同一形参重复赋值

def foo(x,y,z):
    pass
foo(1,y=2,3)        # 报错,语法错误
foo(1,y=2,z=3,x=4)  # 报错,语法错误

二、 默认形参

    函数在定义阶段就可以给形参赋值了

     1.该形参在函数调用阶段如果不给值  则使用默认

     2.该形参在函数调用阶段可以继续给值  则使用你给

# 定义学员注册功能
	def register(name, age, gender='male'):
    	print('%s:%s:%s' % (name, age, gender))
    register('jason', 18)
    register('tony', 28)
    register('kevin', 38)
    register('lili', 18, 'female')
    register('lili', 18, gender='female')
 
"""



2、默认形参的值通常应该是不可变类型


例一:
def func(name,hobby,hobbies = []): # 三次调用都用的是同一列表
    hobbies.append(hobby)
    print('%s的爱好是%s'%(name,hobbies))
func('jack','read')     # jack的爱好是['read']
func('tom','play')      # tom的爱好是['read', 'play']
func('bob','movie')    # bob的爱好是['read', 'play', 'music']

# 例二:
def func(name,hobby,hobbies = None):   # 设定hobbies为None
    if hobbies is None:         # 如果没有为hobbies传值,hobbies默认就是None
        hobbies = []            # 每次传值给hobbies,就会产生新的列表
    hobbies.append(hobby)
    print('%s的爱好是%s' %(name,hobbies))




3.默认形参的值是在函数定义阶段赋值的

m = 111
def func(x,y,z = m):   # 在定义阶段就把111赋值给了z
    print(x)
    print(y)
    print(z)
m = 666
func(1,2)



func('jack','read')
func('tom','play')
func('bob','music')
func('lili','eat',["movie"])
位置形参与默认值形参在定义的时候
	位置形参必须在默认值形参的前面
"""
'''格式越简单的越靠前 格式越复杂的越靠后'''

三、可变长参函数

1、函数无论传入多少位置参数都可以正常的运行

1.函数无论传入多少位置参数都可以正常的运行

可变长参数值得是在调用函数时,传入的实参个数不固定,对应这必须有特殊形式的形参来接收溢出的实参

实参无非两种形式
溢出的位置实参————————*
溢出的位置关键字实参————————**

*与**在形参中是一种汇总行为

1、*在形参中的应用:*会将溢出的位置实参合并成一个元组,然后赋值给紧跟其后的那个形参名

def func(x,*y):   # *是接收位置溢出实参的功劳,不是y变量名的功劳。*后面可以跟任意变量名。
    print(x)
    print(y)
    
func(1,2,3,4,5)  #  x = 1 , y = (2,3,4,5)
# 1
# (2,3,4,5)
def func(x,*args):  # args变量名(译:参数) 通常搭配*使用 *args接收位置实参的溢出
    print(x)
    print(args)

func(1,2,3,4,5)  # 同上是一个道理


def my_sum(*args):  # 求和运算的函数
    res = 0
    for i in args:
        res += i
    print(res)

my_sum(1,2)
# 3
**在形参中的使用
.用于接收多余的位置实参的关键字实参, 并组织成字典的形式赋值给紧跟其后的那个形参名

函数无论传入多少关键字参数都可以正常运行
def func(x, **kwargs):  # kwargs变量名通常搭配**使用
    print(x)
    print(kwargs)

func(1,a=2,b=3,c=4)
'''
1
{'a': 2, 'b': 3, 'c': 4}
'''

# 定义一个函数无论传入多少位置参数和关键字参数都可以正常运行
def index(*a,**b):
    print(a,b)
index()  # () {}
index(1,2,3,4)  # (1, 2, 3, 4) {}
index(a=1,b=2,c=3)  # () {'a': 1, 'b': 2, 'c': 3}
index(1,2,3,4,a=1,b=2,c=3)  # (1, 2, 3, 4) {'a': 1, 'b': 2, 'c': 3}
"""
墨守成规
可变长形参*与**后面的变量名其实是可以随便定义的但是python 中推荐使用

*args
**kwargs
def index(*args,**kwargs)
pass

"""

 **在是惨重的使用

         .会将字典键值对打散成关键字实参传入

**只能跟字典类型
# ** 只能跟字典类型
def func(x, y, z):
  	print(x)
    print(y)
    print(z)
func(**{"k1": 111, "k2": 2222})  # func(k2=2222,k1=111) 报错,没有k关键字,打散后对应不上

func(**{"x": 111, "y": 2222, "z": 333})  # **将字典打散成关键字实参
'''
111
2222
333
'''

# 例1:
def wrapper(*args, **kwargs):  # 形参中带*和**是一种汇总行为
    print(args)
    print(kwargs)

wrapper(1, 2, 3, 4, 5, 6, a=1, b=2, c=3)
'''
(1, 2, 3, 4, 5, 6)
{'a': 1, 'b': 2, 'c': 3}
'''

# 例2:
def index(x, y, z):
    print(x, y, z)

def wrapper(*args, **kwargs):  
    index(*args, **kwargs)   
    
wrapper(1, y=2, z=3)  # 1 2 3

'''
实参中带 * 和 ** 是一种打散行为
index(*(1, 2, 3, 4, 5, 6), **{"a": 1, "b": 2, "c": 3})
index(1, 2, 3, 4, 5, 6, a=1, b=2, c=3)

 命名关键字形参:在*与**中间的形参称之为命名关键字形惨(了解)

特点:必须按照key=value的形式传参

def register(name,age,*,sex,height):
       pass

# register('jason',18,'male',183)
register('lili',18,sex='male',height='1.8m') #正确使用

"""
sex height在传入实参的时候必须以关键字参数的形式
ps:该类型的参数几乎不用 也几乎很少能碰到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值