Python函数,函数的参数。

本文介绍了Python函数的定义、命名规则以及模块的使用。深入探讨了time.strftime()方法,形参与实参的区别,并详细阐述了函数参数的类型,包括必需参数、关键字参数、默认参数和不定长参数,通过实例展示了它们的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python函数:

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可;

定义一个函数

定义一个由自己想要功能的函数,以下是简单的规则:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

函数名的命名规则

  • 函数名必须以下划线或字母开头,可以包含任意字母、数字或下划线的组合。不能使用任何的标点符号;
  • 函数名是区分大小写的。
  • 函数名不能是保留字

Python 模块

Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。

模块让你能够有逻辑地组织你的 Python 代码段。

把相关的代码分配到一个模块里能让你的代码更好用,更易懂。

模块能定义函数,类和变量,模块里也能包含可执行的代码。

import本质(路径搜索和搜索路径)

直接使用import module_name语句导入即可;

Python常用模块
    - 运行时服务相关模块: copy / pickle / sys / ...
    - 数学相关模块: decimal / math / random / ...
    - 字符串处理模块: codecs / re / ...
    - 文件处理相关模块: shutil / gzip / ...
    - 操作系统服务相关模块: datetime / os / time / logging / io / ...
    - 进程和线程相关模块: multiprocessing / threading / queue
    - 网络应用相关模块: ftplib / http / smtplib / urllib / ...
    - Web编程相关模块: cgi / webbrowser
    - 数据处理和编码模块: base64 / csv / html.parser / json / xml / ...

Python time strftime()方法

Python time strftime() 函数接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定;

举例:

>>> import time
>>> time_for = '%Y-%m-%d %X'
>>> print(time_for)
%Y-%m-%d %X
>>> print(time.strftime(time_for))
2019-06-20 13:50:46

形参和实参:

形参:形式参数,不是实际存在,是虚拟变量。在定义函数和函数体的时候使用形参,目的是在函数调用时接收实参(实参个数,类型应与实参一一对应);

实参:实际参数,调用函数时传给函数的参数,可以是常量,变量,表达式,函数,传给形参  ; 

区别:形参是虚拟的,不占用内存空间,.形参变量只有在被调用时才分配内存单元,实参是一个变量,占用内存空间,数据传送单向,实参传给形参,不能形参传给实参;

函数特性,实例:

import time

def logger(n):          #定义函数;
    time_format = '%Y-%m-%d %X'     #定义时间格式;
    time_current = time.strftime(time_format)   #接收时间;
    #打开日志文件,‘a’追加模式,如果没有此文件系统会自动创建;
    with open('日志文件','a') as f:    
        #%s为占位符,内容为“时间+end action+n(n是随着action1(n)变化的)”;         
        f.write('%s end action%s \n' % (time_current,n))    

def action1(n):     #这里action1(n)如果被传参,logger(n)也会随之变化;
    print('starting action1...')
    logger(n)
def action2(n):
    print('starting action2...')
    logger(n)
def action3(n):
    print('starting action3...')
    logger(n)

action1(111)    #传入参数
action2(222)
action3(333)

执行结果会自动创建一个日志文件,并写入日志记录:

函数参数:

  • 必需参数
  • 关键字参数
  • 默认参数
  • 不定长参数

必须参数:

必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样;

def display_info(name,age):
    print('Name: %s' % name)
    print('Age: %d' % age)

display_info('xuan',18)
display_info('li', 20)

执行结果:

Name: xuan
Age: 18
Name: li
Age: 20

关键字参数:

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

def display_info(name,age):
    print('Name: %s' % name)
    print('Age: %d' % age)
display_info(age = 18,name = 'xuan')
display_info(age = 40,name = 'laowang')

执行结果:

Name: xuan
Age: 18
Name: laowang
Age: 40

默认参数:

调用函数时,缺省参数的值如果没有传入,则被认为是默认值。下例会打印默认的sex,如果sex没有被传入:

def display_info(name,age,sex='male'):
    print('Name: %s' % name)
    print('Age: %s' % age)
    print('Sex: %s' % sex)
display_info('xuan',18)
display_info('wang',20)
display_info('liu',18,sex = 'female')

执行结果:

Name: xuan
Age: 18
Sex: male
Name: wang
Age: 20
Sex: male
Name: liu
Age: 18
Sex: female

不定长参数:

你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。

加了星号(*)的变量名会存放所有未命名的变量参数。而加(**)的变量名会存放命名的变量参数

不定长参数之加法器:

def add(*args):
    print(args)
    sum = 0
    for i in args:
        sum += i
    print(sum)
add(1,2,3,4,5)

执行结果:

(1, 2, 3, 4, 5)
15

无命名参数:

def display_info(*args,**kwargs):
    print(args)
    print(kwargs)

display_info('xuan',18,sex = 'male',job = 'IT')

执行结果:

('xuan', 18)
{'sex': 'male', 'job': 'IT'}

有命名参数:

例1

def display_info(*args,**kwargs):
    print(kwargs)
    for i in kwargs:
        print('%s:%s' % (i,kwargs[i]))
display_info(name = 'xuan', age = 18, sex = 'male', job = 'IT')

执行结果:

{'name': 'xuan', 'age': 18, 'sex': 'male', 'job': 'IT'}
name:xuan
age:18
sex:male
job:IT

例2

def display_info(sex = 'male',*args,**kwargs):
    print(args)
    print(kwargs)
    for i in kwargs:
        print('%s:%s' % (i,kwargs[i]))
display_info(1,2,3,'test',name = 'xuan',job = 'IT')

#不定长参数位置优先级:*args放在左边,**kwargs放在右边;
#如果有默认参数,放左边;
#参数优先级举例:def func(name,age=18,*args,**kwargs)

执行结果:

(2, 3, 'test')        #这里可以看到1所在位置被“sex = 'male'”给占用掉;
{'name': 'xuan', 'job': 'IT'}
name:xuan
job:IT

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值