2020-09-26

1.函数简介

1.函数也是⼀个对象
2.函数⽤来保存⼀些可执⾏的代码,并且可以在需要时,对这些语句进⾏多次调⽤
       语法
       def   函数名 ([形参1,形参2,形参3....]):
               代码块
注意:函数名必须符合标识符的规范(可以包含字⺟、数字、下划线但是不能以数字开头)
print是函数对象 print()是调⽤函数

2.函数的参数

· 形参和实参
1.形参(形式参数) 定义形参就相当于在函数内部声明了变量,但是并不是赋值
2.实参(实际参数)指定了形参,那么在调⽤函数时必须传递实参,实参将会赋值给对应的形参,简单来说有⼏个形参就要有几个实参

定义一个函数来求任意2个数的和

def fn(a, b):

print(a + b)   #3    157991


fn(1, 2)# TypeError: fn() missing 2 required positional arguments: 'a' and 'b'
fn(123424, 34567)

#参数: 在定义函数的时候,可以在函数后面的括号里定义数量不等的形参,形参就是形式上的参数,多个参数之间必须用逗号隔开(形参就是没有给赋值的参数)

#实参: 实参就是会赋值给对应的形参的参数,有几个形参就要传几个实参
·函数的传递方式
1.定义形参时,可以为形参指定默认值。指定了默认值以后,如果⽤户传递了参数则默认值不会⽣效。如果⽤户没有传递,则默认值就会⽣效
2.位置参数:位置参数就是将对应位置的实参赋值给对应位置的形参
3.关键字参数 : 关键字参数可以不按照形参定义的顺序去传递,⽽根据参数名进⾏传递
4.混合使⽤位置参数和关键字参数的时候必须将位置参数写到关键字参数前面去
#参数可以制定一个默认值
def fn(a, b, c=20):
print('a = ', a)
print('b = ', b)
print('c = ', c)


fn(1, 2)     #a=1   b=2   c=20


#位置传参 : 就是讲对应位置上的实参赋值给对应位置上的形参
def fn(a, b, c):
 print('a = ', a)
print('b = ', b)
 print('c = ', c)


fn(1, 2, 3)    #a=1   b=2    c=3

#关键字传参  可以不按照定义的顺序去传递实参,根据参数名去传递参数
#混合使用的时候必须将位置参数放到最前面
def fn(a, b, c):
print('a = ', a)
print('b = ', b)
print('c = ', c)


fn(1, b=2, c=3)  #a=1  b=2  c=3

3. 不定长参数

1.定义函数时,可以在形参前⾯加⼀个*,这样这个形参可以获取到所有的实参,它会将所有的实参保存到⼀个元组中
2.带*号的形参只能有⼀个,可以和其他参数配合使⽤
3.*形参只能接受位置参数,不能接受关键字参数
4.**形参可以接收其他的关键字参数,它会将这些参数统⼀保存到字典当中。字典的key就是参数的名字,字典的value就是参数的值
5.**形参只有⼀个,并且必须写在所有参数的后面
#使用*a接受不定长参数,a的对应数据是一个元组
#*a 可以和其他的参数配合使用,但是注意*a要放到后面,*kwargs前面,且  带星号的    参数只能有一个
#*a 只能接受位置参数
#**a 来接受关键字参数,a 的对应数据是一个字典
#不定长参数: *args  **kwargs


def fn(*args, **kwargs):
   #r = 0
   print('a = ', kwargs)
   print('a = ', args)
   #print(b)
   #for i in args:
   #   r += i
   # print(r)


fn(1, 2, 3, a=1, b=2, c=3)

d = dict(a=1, b=2)
print(type(d))
输出
a =  {'a': 1, 'b': 2, 'c': 3}
a =  (1, 2, 3)
<class 'dict'>

4… 参数的解包

1.传递实参时,也可以在序列类型的参数前添加星号,这样它会⾃动的将序列中元素依次作为参数传递
2.要求序列中的元素的个数必须和形参的个数⼀致
def fn(a, b, c):
   print('a = ', a)
   print('b = ', b)
   print('c = ', c)


#tuple1 = (1, 2, 3)
d = {'a': 1, 'b': 2, 'c': 3}
#fn(tuple1[0], tuple1[1], tuple1[2])
fn(**d)
#print("a=",**kwargs)
输出
a =  1
b =  2
c =  3

5.可变和不可变类型

1.可变类型: value可以变,但是id不会变
2.不可变类型: 一般value不可变,但是value一旦改变,id也会改变,相当于重新赋值
str1 = 'abcd'
print(id(str1))
print(id(str1.upper()))


list1 = [1, 2, 3]
print(id(list1))
list1[0] = 10
print(id(list1))
输出
2841633927216
2841633928000
2841633112456
2841633112456
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java中的Calendar类来获取本周内每一天的开始时间和结束时间,然后将这些时间格式化输出。 下面是一个示例代码: ```java import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Main { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 获取当前时间 Calendar calendar = Calendar.getInstance(); Date now = calendar.getTime(); // 获取本周的第一天和最后一天 calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); Date startOfWeek = calendar.getTime(); calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); Date endOfWeek = calendar.getTime(); // 输出每一天的开始时间和结束时间 for (int i = Calendar.MONDAY; i <= Calendar.SUNDAY; i++) { calendar.set(Calendar.DAY_OF_WEEK, i); Date day = calendar.getTime(); String startTime = sdf.format(day) + " 00:00:00"; String endTime = sdf.format(day) + " 23:59:59"; System.out.println("Day: " + sdf.format(day)); System.out.println("Start time: " + startTime); System.out.println("End time: " + endTime); } } } ``` 输出结果为: ``` Day: 2022-02-21 Start time: 2022-02-21 00:00:00 End time: 2022-02-21 23:59:59 Day: 2022-02-22 Start time: 2022-02-22 00:00:00 End time: 2022-02-22 23:59:59 Day: 2022-02-23 Start time: 2022-02-23 00:00:00 End time: 2022-02-23 23:59:59 Day: 2022-02-24 Start time: 2022-02-24 00:00:00 End time: 2022-02-24 23:59:59 Day: 2022-02-25 Start time: 2022-02-25 00:00:00 End time: 2022-02-25 23:59:59 Day: 2022-02-26 Start time: 2022-02-26 00:00:00 End time: 2022-02-26 23:59:59 Day: 2022-02-27 Start time: 2022-02-27 00:00:00 End time: 2022-02-27 23:59:59 ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值