python函数的定义域_Python--函数

一、函数定义:

1.在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x成为自变量,y成为因变量,y是x的函数。

自变量x的取值范围叫做这个函数的定义域

2.在编程语言中,函数是逻辑结构化和过程化的一种编程方法。

python中函数的定义方法:

deftest(x):"The function definitions"x+= 1

return x #在函数中,return一般放在最后,一旦执行到return,函数即终止

def:定义函数的关键字  test:函数名  (x):参数  x:返回值

定义过程:过程没有return返回

deffunc2():'''testing2'''

print('in the func2')

执行:

deffunc1():"""testing1"""

print('in the func1')return0deffunc2():'''testing2'''

print('in the func2')

x=func1()

y=func2()print('x',x)print('y',y)>>>

inthe func1inthe func2

x 0

y None

过程因为没有返回值,所以y的值是None

模拟一个写日志的小程序:

def lgwr(): #定义一个写日志的过程

with open('a.txt','a') as f:

f.write('\nend action')#下面3个过程都分别调用写日志的过程。

importtimedeflgwr():

time_format= '%Y-%m-%d %X' #定义时间格式

time_current = time.strftime(time_format) #定义变量为当前时间

with open('a.txt','a') as f:

f.write('time %s end action\n' %time_current)deftest1():print('in the test1')

lgwr()deftest2():print('in the test2')

lgwr()deftest3():print('in the test3')

lgwr()

test1()

test2()

test3()

普通参数:使用定义函数来完成发送邮件

defsendmail(mailaddr,content):try:importsmtplibfrom email.mime.text importMIMETextfrom email.utils importformataddr

msg= MIMEText(content,'plain','utf-8') #邮件内容

msg['From'] = formataddr(['Tim','aqing1243@163.com'])

msg['To'] = formataddr(['走人','51828446@qq.com'])

msg['Subject'] = '主题'server= smtplib.SMTP('smtp.163.com',25)

server.login('aqing1243@163.com','sina4433') #发送方邮箱账户密码

server.sendmail('aqing1243@163.com',[mailaddr,],msg.as_string()) #目标端邮箱

server.quit()except:return False #发送失败执行

else:return True #发送成功执行

whileTrue:

em= input('请输入邮箱:')

text= input('请输入内容:')

result=sendmail(em,text)if result ==True:print("发送成功")break

else:print('发送失败')

函数的参数传递按照形参的顺序依次传递,一般有几个形参,在调用函数时就需要传递几个参数。

如果函数有默认参数的情况下,默认函数可以不传递。默认函数一般放在最后。

默认参数:

def send(name,content,xx='OK')

...

...return....

send('Tim','hello') #第三个默认参数可以不传递,不传递的时候函数使用默认值

send('Tim','hello','good')

指定参数:

ef send(name,content)

...

...return....

send(content='hello',name='Tim') #参数也可以不按照顺序传递,但是需要指定形参的赋值

send('Tim','hello')

动态参数1:

def f1(*args): #动态参数加*表明,默认将传入参数放置在元组中

print(args,type(args))

f1(11,22,'Tim','hhhh') #将每个参数添加进元组作为一个元素

li = [11,22,'Tim','hhhh']

f1(*li) #将列表的元素转化为元组的元素

f1(li) #将列表当成一个元素传给元组

>>>(11, 22, 'Tim', 'hhhh') (11, 22, 'Tim', 'hhhh') ([11, 22, 'Tim', 'hhhh'],) 动态参数2**:def f1(**args): #动态参数加**表明,默认将传入参数放置在字典中

print(args,type(args))

f1(k1="v1",k2='v2') #传递字典的形式

dic = {'k1':'v1','k2':'v2'}

f1(**dic) #把字典的每一个元素传递给字典

>>>{'k2': 'v2', 'k1': 'v1'} {'k1': 'v1', 'k2': 'v2'}

万能参数:

def f1(*args,**kwargs): #*在前,**在后

print(args)print(kwargs)

f1(11,22,33,44,k1='v1',k2='v2')>>>(11, 22, 33, 44)

{'k2': 'v2', 'k1': 'v1'}

format()的各种参数使用:

s = 'i am {0},age {1}'.format('Tim',18)

s1= 'i am {0},age {1}'.format(*['Tim',18])

s2= 'i am {name},age {age}'.format(name='Tim',age=18)

dic= {'name':'Tim','age':18}

s3= 'i am {name},age {age}'.format(**dic)print(s)print(s1)print(s2)print(s3)>>>i am Tim,age18i am Tim,age18i am Tim,age18i am Tim,age18

引用参数:函数内部运算的结果直接作用于外部的参数变量。

deff1(a1):

a1.append(999)

li= [11,22,33,44]

f1(li)print(li)>>>[11, 22, 33, 44, 999]

name = ['Tim','mike'] #全局变量

name1 = ['Eric','Jeson'] #全局变量

name3 = ['Tom','jane'] #全局变量

deff1():

name.append('Eric') #列表的append方法可改变外部全局变量的值

print('函数内name: %s'%name)

name1= '123' #重新赋值不可改变外部全局变量的值

print('函数内name1: %s'%name1)global name3 #如果需要重新给列表赋值,需要使用global定义全局变量

name3 = '123'

print('函数内name3: %s'%name3)

f1()print('函数外name: %s'%name)print('函数外name1: %s'%name1)print('函数外name3: %s'%name3)>>>函数内name: ['Tim', 'mike', 'Eric']

函数内name1:123函数内name3:123函数外name: ['Tim', 'mike', 'Eric']

函数外name1: ['Eric', 'Jeson']

函数外name3:123

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值