Python学习Day4



一、三目运算
  
该运算是对简单的条件语句的缩写。

result = 1 if 条件 else 2
如果if条件成立,就将值1赋给result,如果条件不成立则将值2赋给result。
set集合
set 是一个无序的元素集合,支持并、交、差及对称差等数学运算, 但由于 set 不记录元素位置,因此不支持索引、分片等类序列的操作。

注意:
1、s0 d0 使用{}只能创建空字典,创建空集必须使用set()
2、ss、s1 set中的元素是无序不重复的,可以利用这个特点取出列表中的重复元素。
集合的运算操作

注意:非运算符的方法接受任何可迭代的对象作为参数

二、深拷贝与浅拷贝
在python中,对象复制实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而是拷贝了这个对象的引用。我们可以用两种思路来理解深拷贝和浅拷贝。
ps:对于数字 字符串来说,赋值、深浅拷贝毫无意义,因为它们永远指向同一个内存地址。

深浅拷贝对于字典、元组、列表而言,进行赋值,深浅拷贝的时候,其内存地址是不同的。
1.利用切片和工厂方法list方法拷贝


3个列表中的第二个元素都是指向同一个内存地址,这就是为什么改变了mei的年龄,而其他人的年龄也跟着变了的原因。
浅拷贝,在内存中只额外创建第一层数据。
利用copy中的deepcopy方法进行拷贝就叫做深拷贝,外围和内部元素都进行了拷贝对象本身,而不是引用。
三、函数
面向过程编程:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到先需要的功能处:
函数是组织好的,可以重复使用。函数能提高应用的模块性和代码的重复利用率。

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

 

def printme( str ):
    "打印字符串到显示器设备上"
    print(str)
    return

 

 

 

在定义函数的时候,给函数一个名字,指定了函数里包含的参数和代码结构。

函数的基本功能完成以后,可以通过另一个函数调用来执行,也可以直接从python的提示符执行。

#定义一个函数
def printme( str ):
    "打印字符串到显示器设备上"
    print(str)
    return
#调用函数
printme("调用一次该函数")
printme("再次调用一次")

 

重要:所有参数(自变量)在python中都是按引用传递的,如果在函数里修改了参数,那么在调用这个函数的函数中,原始的参数也被改变了。

def changme( mylist ):
    "修改传入的列表"
    mylist.append([1,2,3,4])
    print(mylist)
    return
mylist = [10,20,30]
changme(mylist)
print(mylist)

 

"""参数:在调用函数时,大多数情况下主调函数和被调函数之间存在着数据传递关系。"""
#普通参数:以正确的顺序传入函数,调用时数量和声明时的一样。形参和实参是一一对应的。
#指定参数:参数和函数调用关系密切,函数调用时用关键字参数来确定传入的参数值,可以不按照顺序,想指定给谁就给谁。
#默认参数:函数在调用时,如果没有新的参数传入在默认的情况下,调用默认参数。一定放在所有参数的最后面,
#动态参数:可能需要一个函数能处理比当初声明时更多的参数。声明时不会命名
#*args 接受参数的时候自动转换为元组
# **kwargs 自动转换为列表
普通参数:在下面案例中,在定义函数的时候有参数str,调用的时候必须有一个str类型的参数传入,要不然会报错
# def printme( str ):
#     "打印字符串到显示器设备上"
#     print(str)
#     return
# #调用函数
# printme("调用一次该函数")

 指定参数,又叫关键字参数:重要的特性就是,可以不按照顺序,想指定给谁就给谁。

默认参数,也叫缺省参数。缺省参数的值如果没有传入,则被认为是默认值。


动态参数,也叫不定长参数,在可能需要一个函数能处理比当初声明时更多的参数。
ps:
#*args 接受参数的时候自动转换为元组
         # **kwargs 自动转换为列表



return的作用
return语句[表达式]退出函数,选择性的调用方返回一个表达式,不带参数值得return语句返回None,这里的None不代表无、不存在。
如果有参数返回,则需要一个示例来说明:


以上例子,也可以说明全局变量与局部变量:
  • 函数内的total是局部变量,只能在其被声明的函数内部访问
  • 函数外的total是全局变量,可以在整个程序范围内访问。
  • 调用函数的时候,所有在函数内声明的变量名都将被加入到作用域中。

作用域:一个程序所有的变量不是在任何位置都可以访问的,访问权限决定于整个变量在哪里赋值。

变量的作用域决定了哪一部分程序可以访问哪个特定的变量名称。

 

 

 

随机验证码

 

#生成一个随机数

import random

temp = " "
for i in range(4):
    num = random.randrange(0,4)
    if num == 3 or num ==1:
        rad2 = random.randrange(0,10)
        temp = temp + str(rad2)
    else:
        rad1 = random.randrange(65,91)
        c1 = chr(rad1)
        temp = temp + c1

print(temp)

 

posted @ 2016-05-29 11:00  Snow_man  阅读(146)  评论(0)    收藏  举报