133 lines
2.2 KiB
Python
133 lines
2.2 KiB
Python
#####################
|
|
# Atomic data types #
|
|
#####################
|
|
|
|
a = 89 # Integer
|
|
b = 0.5 # Float
|
|
c = 9 + 0.4j # Complex
|
|
d = True # Boolean
|
|
e = None # Nonetype
|
|
|
|
########################
|
|
# Composite data types #
|
|
########################
|
|
|
|
f = [1, '2', 3] # List
|
|
g = (1, '2', 3) # Tuple
|
|
h = {1: 'one', # Dict
|
|
'two': 2,
|
|
3: 'Three'}
|
|
i = set([1, 2, 3]) # Set
|
|
j = frozenset(f) # Frozen set
|
|
|
|
######################
|
|
# Control structures #
|
|
######################
|
|
|
|
# If
|
|
if 1 < 2:
|
|
print("It's true!")
|
|
elif 2 < 1:
|
|
print("It's false!")
|
|
else:
|
|
print("It's neither!")
|
|
|
|
# For
|
|
for i in f:
|
|
print(i)
|
|
|
|
# While
|
|
while a > 80:
|
|
print(a)
|
|
a -= 1
|
|
|
|
########################
|
|
# Function definitions #
|
|
########################
|
|
|
|
# No arguments
|
|
|
|
def fun():
|
|
return 89
|
|
|
|
fun()
|
|
|
|
# Functions without a return statement return None
|
|
|
|
def non():
|
|
pass
|
|
|
|
print(non())
|
|
|
|
# Positional arguments
|
|
|
|
def sum(a, b):
|
|
return a + b
|
|
|
|
print(sum(1, 2))
|
|
|
|
# Keyword arguments
|
|
|
|
def divide(dividend = 1, divisor = 1):
|
|
return dividend / divisor # Unsafe!!
|
|
|
|
print(divide())
|
|
print(divide(divisor = 2))
|
|
print(divide(dividend = 4, divisor = 2))
|
|
print(divide(divisor = 4, dividend = 2))
|
|
|
|
# Both argument types
|
|
|
|
def xnp(x, n, p = 1):
|
|
# Keyword args MUST appear AFTER positional args!
|
|
return (x * n) + p
|
|
|
|
# Variable length arguments
|
|
|
|
def varargs(*args):
|
|
for a in args:
|
|
print("Argument " + str(args.index(a)) + " is " + str(a))
|
|
|
|
varargs(1)
|
|
varargs(2, 3)
|
|
varargs(4, 5, 6)
|
|
|
|
# Variable keyword arguments
|
|
|
|
def varkwargs(**kwargs):
|
|
for k in kwargs.keys():
|
|
print('Argument "' + str(k) + '" is "' + str(kwargs[k]))
|
|
|
|
varkwargs(a = 1, b = 2, c = 3)
|
|
|
|
# Everything!
|
|
|
|
def allargs(a, b, c = None, *args, **kwargs):
|
|
print("a is " + str(a))
|
|
|
|
print("b is " + str(b))
|
|
|
|
if c is None:
|
|
print("c is None")
|
|
else:
|
|
print("c is Some")
|
|
|
|
for a in args:
|
|
print("Argument " + str(args.index(a)) + " is " + str(a))
|
|
|
|
for k in kwargs.keys():
|
|
print('Argument "' + str(k) + '" is "' + str(kwargs[k]))
|
|
|
|
allargs('a', 1, None, 2, 3, 4, q = "Hail", w = "Caesar!")
|
|
allargs(1, 2, c = 89)
|
|
|
|
# Nested functions
|
|
|
|
def outer(x):
|
|
def inner(y):
|
|
return x + y
|
|
|
|
return inner(9)
|
|
|
|
print(outer(1))
|