Skip to content

Instantly share code, notes, and snippets.

@cuckookernel
Last active March 20, 2023 04:02
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save cuckookernel/9777067 to your computer and use it in GitHub Desktop.
Save cuckookernel/9777067 to your computer and use it in GitHub Desktop.
Python to Julia Quick translation / conversion reference Guide

A quick and dirty syntax translation / conversion reference guide to ease the transition between Python and Julia. This is not meant as a reference to the language. For that you should read the manual.

Some important differences

  • Arrays in Julia are indexed starting from 1.
  • In Julia classes (i.e. types) don't own methods. Methods are implementations of generic functions and are invoked in a "static style", i.e. instead of Python's str1.rstrip(), we will have rstrip( str1 ), instead of file1.close(), close( file1 ).

Some important similarities.

Core

Getting around: All objects

Python Julia Comments
True true
False false
None nothing
type( obj ) typeof( obj )
{} Dict{KeyType,ValueType}()
elif elseif
lambda x, y : y + x * 2 (x,y) -> y + x * 2
"string %s interpolation %d" % ( str1, i1) "string $str1 interpolation $i1 " You can interpolate arbitrary expressions by enclosing them in braces, as in "${x+y}"
xrange(10,4,-2)` 10:-2:4
range(10,4,-2) [10:-2:4] Do this only if you really have to, as it will consume memory proportional to the length of the range
id( obj ) object_id( obj )
raise excetion throw( exception )
obj.fun( x, y) fun( obj, x, y)
with Lazy.jl
@> obj f(x,y)
## Basic String operations
Python Julia
str1 + str2 + str2 string( str1, str2, str3 )
len( str1 ) length( str1 )
str1.rstrip() rstrip( str1 )
str1.startswith( x ) ??? write your own such as the one in pytojul.jl

Regular expressions

Python Julia
m = re.match( r"(\d+):(\d+)", mystr ) m = match( r"(\d+):(\d+)", mystr )
m is not None m != nothing
arr = m.groups() arr = m.captures

File processing

Python Julia
f = open( "file.txt" ) f = open( "file.txt")
for line in f for line in eachline( f )
f.close() close( f )

Exceptions

(http://julia.readthedocs.org/en/latest/manual/control-flow/#exception-handling)

Python Julia
raise excetion throw( exception )
RuntimeError( "msg" ) (?) ErrorException( "msg" )
module pytojul.jl
export startswith
function startswith( x::ASCIIString, y::ASCIIString )
# Disclaimer: This function is still buggy. Please help me find the bug...
if length(y) > length(x)
return false
else
for i = 1 : length(y)
if x[i] != y[i]
return false
end
end
return true
end
end
end #module
@schneiderfelipe
Copy link

Now there is a startswith function in Base.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment